题目描述:
不使用运算符 +
和 -
,计算两整数 a
、b
之和。
示例 1:
输入: a = 1, b = 2
输出: 3
示例 2:
输入: a = -2, b = 3
输出: 1
解题思路:
- a^b 是取得两数无进位相加,a & b 是取得两数相加后的进位。
- 无进位相加与进位不断异或,直至进位为0
代码实现:
class Solution {
public int getSum(int a, int b) {
int sum;
while (true) {
sum = a ^ b;
int flag = (a & b) << 1;
if (flag == 0) {
break;
}
a = sum;
b = flag;
}
return sum;
}
}