力扣(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);
    }
}

 

posted @ 2019-03-04 21:31  AXiangCoding  阅读(305)  评论(0编辑  收藏  举报