两个整数之和(力扣第371题)

371.两个整数之和

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

示例 1:

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

示例 2:

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

分析:

​ 使用位运算,可以将两个数的加法运算拆分为两步位运算,那就是先计算两个数在没有进位情况下的相加结果,这对于二进制数来说可以通过异或运算来实现。然后计算进位值,进位值应该等于(a&b)<<1,最后将进位值与没有进位的相加结果值再相加可得一个初步结果,一直递归下去,直到进位值为0,递归结束。

public int getSum(int a, int b) {

    return b == 0 ? a : getSum(a^b,(a&b)<<1);
}
posted @ 2020-12-06 14:35  有心有梦  阅读(190)  评论(0编辑  收藏  举报