371. Sum of Two Integers - jiejackyzhang/leetcode-note GitHub Wiki
Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.
Example:
Given a = 1 and b = 2, return 3.
位操作题目。
设a = 1, b = 3, 即a = 0001, b = 0011
进位:carry = a & b = 0001
非进位相加,赋值给a,'^'为xor:a = a ^ b = 0010
将进位赋值给b:b = carry << 1
循环相加,直到b为0,即无进位。
public class Solution {
    public int getSum(int a, int b) {
        if(a == 0) return b;
        if(b == 0) return a;
        while(b != 0) {
            int carry = a & b;
            a = a ^ b;
            b = carry << 1;
        }
        return a;
    }
}