Sum of Two Integers 两整数之和

不使用运算符 + 和 - ,计算两整数 ​​​​​​​a 、b ​​​​​​​之和。

示例 1:

输入: a = 1, b = 2
输出: 3

示例 2:

输入: a = -2, b = 3
输出: 1

思路:这道题不能使用+,-,所以只能用与或来计算。加入我们计算7+8,7(111),8(1000),先计算不算进位的值(这里非进位的规则是:0与0=0,0与1=1,1与0=1,1与1等于0,相当于异或操作):111+1000=1111,然后计算进位的值carry=111进位1000=0000(这里进位的规则是(0进位0=0,1进位0=0,0进位1=0,1进位1=1,相当于与操作)),然后把两个相加即可。

参考代码:

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

猜你喜欢

转载自blog.csdn.net/qq_26410101/article/details/82497667