题目描述
-
描述
输入两个整数 a 和 b,不使用四则运算符的情况下,计算两个数相加。 -
输入与输出
输入:a = 10, b = 20 输出:30
思路
不使用四则运算符运算符,那么就只能使用位运算了。那么如何使用位于那算符呢?
核心需要做两件事
- 明确哪些不需要进位;
- 明确哪些需要进位。
例如 a = 11, b = 3;

明确哪些不需要进位
a ^ b = 1000;
明确哪些需要进位
a & b = 0011;
让 a & b 的结果左移一位(进位)
0110
再让 a ^ b
a ^ b = 1110;
此时就得到了结果
代码
class Slution {
public int add(int a, int b) {
while (b != 0) {
int tmp = a ^ b;
b = (a & b) << 1;
a = tmp;
}
return a;
}
}
浙公网安备 33010602011771号