首页 > 代码库 > [LeetCode] Sum of Two Integers

[LeetCode] Sum of Two Integers

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.

[LeetCode] Sum of Two Integers