不使用运算符 +
和 -
,计算两整数 a
、b
之和。
示例 1:
输入: a = 1, b = 2 输出: 3
示例 2:
输入: a = -2, b = 3 输出: 1
思路:这道题不能使用+,-,所以只能用与或来计算。加入我们计算7+8,7(111),8(1000),先计算不算进位的值(这里非进位的规则是:0与0=0,0与1=1,1与0=1,1与1等于0,相当于异或操作):111+1000=1111,然后计算进位的值carry=111进位1000=0000(这里进位的规则是(0进位0=0,1进位0=0,0进位1=0,1进位1=1,相当于与操作)),然后把两个相加即可。
参考代码:
class Solution {
public:
int getSum(int a, int b) {
return b==0?a:(getSum(a^b,(a&b)<<1));
}
};