标签:
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); } }
标签:
原文地址:http://www.cnblogs.com/Machelsky/p/5867777.html