[leetcode]Sum of Two Integers

easy难度,倒是没啥难度,只是有点意思

a+b不能用+,-符号

思路就是按位算吧,举个例子

a = 20, b = 30
二进制表示
a = 10100
b = 11110
不考虑进位的话 
                       a = 10100
                       b = 11110
                      ----------
                           01010
需要进位的地方              10100
那么,理论上我们自己做加法还要加上进位的,这里需要把进位左移一位,然后继续做加法,直到没有进位
class Solution {
public:
    int getSum(int a, int b) {
        int remain = a & b;
        int sum = a ^ b;
        while (remain) {
            int r = (sum & (remain << 1));
            sum = sum ^ (remain << 1);
            remain = r;
        }
        return sum;
    }
};

你可能感兴趣的:([leetcode]Sum of Two Integers)