题目描述:
不使用运算符 +
和 -
,计算两整数 a
、b
之和。
示例 1:
输入: a = 1, b = 2
输出: 3
示例 2:
输入: a = -2, b = 3
输出: 1
解法:
class Solution {
public:
int getSum(int a, int b) {
int res = 0;
long long val = 1;
bool carry = false;
// 11101
// 00011
for(int i = 0; i < 32; i++){
int bit1 = a&val;
int bit2 = b&val;
// cout<<bit1<<", "<<bit2<<endl;
if(bit1 != 0 && bit2 != 0){
if(carry){
res |= val;
}
carry = true;
}else if(bit1 == 0 && bit2 == 0){
if(carry){
res |= val;
}
carry = false;
}else{
if(!carry){
res |= val;
}
// carry keep the same
}
val <<= 1;
}
return res;
}
};