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