LeetCode371. 两整数之和
给你两个整数 a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和。
示例 1:
输入:a = 1, b = 2
输出:3
示例 2:
输入:a = 2, b = 3
输出:5
提示:
-1000 <= a, b <= 1000
代码实现
/*a b 进位c 和
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
那么进位为(a & b) << 1
和为 a ^ b
我们可以将整数a和b的和,拆分为a和b的无进位加法结果 + 进位结果*/
class Solution {
public int getSum(int a, int b) {
while(b != 0) {
//c为进位位
int c = (a & b) << 1;
//a为a和b与的结果
a = a ^ b;
b = c;
}
return a;
}
}