面试题 17.01. 不用加号的加法
题目
设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。
示例:
输入: a = 1, b = 1
输出: 2
提示:
- a,b均可能是负数或 0
- 结果不会溢出 32 位整数
题解
public int add(int a, int b) {
int sum = a;
while (b != 0) {
// 异或结果为不进位
a = sum ^ b;
// 逻辑与结果为进位
b = (sum & b) << 1;
// 数字交替
sum = a;
}
return sum;
}