不用加减乘除做加法
题目
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷ 四则运算符号。
样例
输入:num1 = 1 , num2 = 2
输出:3
题解
思路
- 两个整数做异或运算 ^,得到各位相加不进位的运算结果
- 两个整数做与运算 &,然后再左移一位,即得到进位的运算结果
- 将上面两个结果相加,再重复步骤 1 和 2,直至进位的运算结果为0
class Solution {
public:
int add(int num1, int num2){
while (num2) {
int sum = num1 ^ num2;
int carry = (num1 & num2) << 1;
num1 = sum;
num2 = carry;
}
return num1;
}
};