力扣(LeetCode)两整数之和 个人题解
不使用运算符 +
和 -
,计算两整数 a
、b
之和。
示例 1:
输入: a = 1, b = 2 输出: 3
示例 2:
输入: a = -2, b = 3 输出: 1
考察的是计算机组成原理的知识,经评论区提示,发现a^b得到的是没有进位的相加,a&b后左移一位得到的是对应位置的进位值,二者相加就相当于补充了进位值,得到正确结果
由于考察的是计算机组成原理相关的知识,所以需要一定的基础,代码反而是次要的。
代码如下:
class Solution { public int getSum(int a, int b) { return b==0?a:getSum(a^b,(a&b)<<1); } }