Sum of Two Integers

题目链接

传送门

题目大意

给定两个整数a和b,在不使用”+”运算符的情况下,计算a+b的和。

解题思路

二进制&操作

a b &结果
0 0 0
1 1 1
0 1 0
1 0 0

二进制异或(^)操作

a b ^操作
0 0 0
1 1 0
0 1 1
1 0 1

发现^操作是每次相加的结果,&操作代表每次的进位。
将a和b转为二进制加法,若有进位,则递归调用。

参考代码

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

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

© 2018-2019 惜春令 京ICP备18010644号 网站地图