LintCode:A+B【位运算】

2019-02-21  本文已影响0人  VickyShen

问题描述:

给出两个整数 a 和 b , 求他们的和。(不使用+等算数运算符)

思路

关键点:不考虑进位的求和 x^y;进位 x&y
步骤:

  1. 通过对x和y进行&位运算,得出每一位上的进位。
  2. 对x和y进行^位运算,得出没有加进位的和。
    3.将所得的和当做新的x,所得的进位往左移一位(第零位的进位输入为0)当做新的y,继续做上面的步骤,直到进位为0。
    此时x中保存的就是x和y的和了。
    递归的条件就是x=0或y=0
    代码
    public int plus(int a,int b){
        if(a==0)
            return b;
        if(b==0)
            return a;
        int a1 =a^b;
        int b1= (a&b)<<1;
        return plus(a1,b1);
       
    }

上一篇 下一篇

猜你喜欢

热点阅读