Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.

Example:
Given a = 1 and b = 2, return 3.

思路:xor相加存无carray的sum,and左移一位为carry,两者相加即可。

11 + 11

11^11=00 , (11&11)<<1=110 

00^110=110

之后总结一下bit的几种常见用法。

参考discussion,自己再实现一遍!

public class Solution {
    public int getSum(int a, int b) {
        if(b==0)
        {
            return a;
        }
        int sum=a^b;
        int carry=a&b;
        return getSum(sum,carry<<1);
    }
}

 

posted on 2016-09-13 11:24  Machelsky  阅读(104)  评论(0)    收藏  举报