解
如果无法通过加减乘除,则思路只能通过位运算。
- 不带进位,求出结果sum
- 求出所有的进位carry
- carry左移一位(因为进位是针对于当前相加的前一位)
- 重复1,直到carry = 0;
class Solution {
public:
int Add(int num1, int num2) {
int carry = 0;
int sum = 0;
while(num2 != 0){
sum = num1 ^ num2;
carry = (num1 & num2) << 1;
num1 = sum;
num2 = carry;
}
return num1;
}
};