[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.

浙公网安备 33010602011771号