两个整数之和(力扣第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);
}