Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.
Example:
Given a = 1 and b = 2, return 3.
这道题考的是半加器 的知识。。 居然忘了
输入 a,b
按照位把ab相加,不考虑进位,结果是 a xor b(a^b)
计算ab的进位的话,只有二者同为1才进位,因此进位可以标示为 (a & b) << 1 ,注意因为是进位,所以需要向左移动1位
class Solution {
public:
int getSum(int a, int b) {
while(b) {
int c = a & b;
a = a ^ b;
b = c << 1;
}
return a;
}
};