写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
//先通过异或运算得到不进位数据,再通过与运算+左移位1得到进位数据,再递归以上操作直至进位值为0
function Add(num1, num2) {
// write code here
// & : 按二进制位进行 与运算,相同位同时为 1 时结果为 1,否则为 0
// | : 按二进制位进行 或运算,相同位有一个为 1 时结果为 1,否则为 0
// ^ : 按二进制位进行 异或运算,相同位相同时结果为 0,否则为 1
// << : 左移
let notCarry = num2; // 不进位数
let carry = num1; // 进位数
if (num1 == 0 || num2 == 0) {
return num1 || num2;
}
while (carry) {
let temp = carry ^ notCarry;
carry = (carry & notCarry) << 1;
notCarry = temp;
}
return notCarry;
}
module.exports = {
Add: Add,
};