Как добавить два числа в JavaScript "без использования операторов" + "или" - "?
Я знаю, что альтернатива использованию знака +
для сложения - сделать что-то вроде этого:
int add(int a, int b)
{
if(b == 0)
return sum;
sum = a ^ b;
carry = (a & b) << 1;
return add(sum,carry);
}
Но у меня есть две проблемы:
- Это C++, а не JavaScript. Поддерживается ли это в JavaScript?
- Очевидно, что вся хитрость в
^
&
<<
, но я не знаю, как начать искать их в JavaScript, потому что я не знаю, как они называются.
Что я должен гуглить даже?
Я пытался написать это на JavaScript... но, кажется, я что-то упустил
var getSum = function(a, b) {
return (a ^ b, (a & b) << 1)
};
Ответы
Ответ 1
Мы будем использовать побитовые операторы и рекурсию.
Мы используем этот метод, когда у нас мало ресурсов. Узнайте больше о том, когда использовать этот метод!
var getSum = function(a, b) {
if (b == 0) {
return a;
} else {
return getSum(a ^ b, (a & b) << 1)
}
};
Ответ 2
Ну хорошо, я отвечаю на вопрос, как четко описано в шапке. Нет +
и нет -
операций правильно..? Все же... не с побитовой, а с чистой математикой должен быть правильный ответ, я полагаю.
var x = 1,
y = 2,
sum = Math.log2(2**x * 2**y);
console.log(sum);
Ответ 3
const add = (a, b) => new Function('a', 'b', 'return ${a} ${String.fromCharCode(43)} ${b}')(a, b);