▶ NOTE:
Ce n'est pas une question de base "comment ajouter des nombres en JavaScript"
Veuillez lire attentivement la question avant de voter
Je sais qu’une alternative à l’utilisation du signe +
pour l’ajout est de faire quelque chose comme ceci:
int add(int a, int b)
{
if(b == 0)
return sum;
sum = a ^ b;
carry = (a & b) << 1;
return add(sum,carry);
}
Mais j'ai 2 problèmes:
^
&
<<
, mais je ne sais pas comment commencer à les rechercher en JavaScript, car Je ne sais pas comment ils s'appellent .J'ai essayé d'écrire cela en JavaScript ... mais il me manque quelque chose
var getSum = function(a, b) {
return (a ^ b, (a & b) << 1)
};
Nous allons utiliser opérateurs au niveau des bits et utiliser récursion
Nous utilisons cette méthode lorsque nous avons peu de ressources, en savoir plus sur l'utilisation de cette méthode!
var getSum = function(a, b) {
if (b == 0) {
return a;
} else {
return getSum(a ^ b, (a & b) << 1)
}
};
Solution ES6 one-liner suggérée par @PatrickRoberts
const getSum = (a,b) => b ? getSum(a ^ b, (a & b) << 1) : a;
Une autre solution:
2- Technique des tableaux Array.prototype.fill ()
const getSum = (a, b) => {
const firstArr = new Array(a).fill(true);
const secondArr = new Array(b).fill(true);
return firstArr.concat(secondArr).length
}
3- Solution de contournement à utiliser plus signe sans l'écrire :
const getSum = (a, b) => eval(''.concat(a).concat(String.fromCharCode(0x2B)).concat(b));
Bien, je réponds à la question telle que clairement décrite dans l’en-tête. Pas d'opération +
ni d'opération -
non? Pourtant ... pas avec les bits mais avec les mathématiques pures devrait être une réponse valable je suppose.
var x = 1,
y = 2,
sum = Math.log2(2**x * 2**y);
console.log(sum);
const add = (a, b) => new Function('a', 'b', `return ${a} ${String.fromCharCode(43)} ${b}`)(a, b);