您的位置:首页 > 其它

[LeetCode] Sum of Two Integers

2016-09-10 21:47 375 查看
The code is as follows.

public class Solution {
public int getSum(int a, int b) {
return b == 0 ? a : getSum(a ^ b, (a & b) << 1);
}
}


The above code may be rewritten to make it more readable.

public class Solution {
public int getSum(int a, int b) {
while (b != 0) {
int c = ((a & b) << 1);
a ^= b;
b = c;
}
return a;
}
}


c
stands for the carry bit of adding two integers. The sum of two integers can be decomposed into a summation bit (
a & b
) and a carry bit (
a ^ b
). The
<< 1
is to set the carry bit to the correct bit. The above process is repeated until no carry (
c
, stored in
b
, becomes 0). Then the sum is stored in
a
.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: