位运算实现a+b


题目:给出两个整数 a 和 b , 求他们的和。

a 1 1 0 0 
b 1 0 1 0
c 10 1 1 0

递归:

1
return b == 0? a : aplusb(a^b,(a&b)<<1);

 

其中 a^b 表示不同的元素, (a&b)<<1 表示相同的元素。

 

 

非递归

1
2
3
4
5
6
7
tmp = 0
while b != 0
  ans = a^b
  b = (a&b)<<1
  a = tmp
 
return a

 

 

原理 保证 a+b和不变,最后b变成了0,那么a就是a+b了。

posted @   ExitQuit  阅读(503)  评论(1编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示