写一个函数,求两个整数之和,要求在函数体内不得使用 +、-、×、÷ 四则运算符号。
数据范围
- −1000≤num1,num2≤1000
样例
输入:num1 = 1 , num2 = 2
输出:3
思路:
- 初始化:函数接收两个整数a和b作为输入。
- 循环:使用while循环,条件是b不等于0。只要存在进位,循环就会继续。
- 求和:使用按位异或运算符^来计算a和b的和,不包括任何进位。这个结果赋值给临时变量temp。
- 处理进位:使用按位与运算符&来计算a和b中的进位部分,然后将这个结果左移一位(<< 1),以便将进位移动到正确的位上。这个结果赋值回b。
- 更新求和结果:将temp赋值回a,这样a就包含了当前位的和,但不包括进位。
- 循环结束:当b变为0时,表示已经没有进位,循环结束。
- 返回结果:返回a作为最终的求和结果。
/**
* @param {number} a
* @param {number} b
* @return {number}
*/
var add = function (a, b) {
while (b !== 0) {
// 求和时不考虑进位,使用按位异或操作
let temp = a ^ b;
// 计算进位,使用按位与操作并且左移一位
b = (a & b) << 1;
// 更新求和结果
a = temp;
}
return a;
};