不使用运算符 + 和-,计算两整数a 、b之和。
示例:
若 a = 1 ,b = 2,返回 3。
两个数异或(^)可以得到两数二进制对应位为0和1相加的结果,但是所有1和1会得到0,因此再对两数做与(&)操作然后左移1位(<<),即是得到所有的进位。因此得到两个新的数,对这两个新的数重复上述步骤直到没有进位
class Solution {
public:
int getSum(int a, int b) {
int tp = (a & b) << 1;
a = a ^ b,b = tp;
while(b){
tp = (a & b) << 1;
a = a ^ b;
b = tp;
}
return a;
}
};