码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode:位运算实现加法

时间:2018-01-28 12:43:44      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:实现   技术分享   span   return   idt   com   思路   src   class   

LeetCode:位运算实现加法

写在前面

位运算符

技术分享图片

实现加法的思路

两个加数,比如5(101)和6(110),如何不用加法就能得出两者之和呢?

我们知道二进制计算中,如果使用异或将会产生无进位的两者之和,而两数相与将会产生进位值!!!

技术分享图片

可这样又如何呢?

1 sum = 011
2 carry =1000

 两者继续异或将会产生

技术分享图片

 结果就出现了,此时无进位,所以进位为0时,sum将会为最终结果!因为此时不需要进位,异或运算就是最终结果!

优质代码

1     public int getSum(int a, int b) {
2         while(b!=0)
3         {
4             int carry = a&b;
5             a=a^b;
6             b=carry<<1;
7         }
8         return a;
9     }

 参考链接

https://github.com/awangdev/LintCode/blob/master/Java/A%2BB.java

 

LeetCode:位运算实现加法

标签:实现   技术分享   span   return   idt   com   思路   src   class   

原文地址:https://www.cnblogs.com/MrSaver/p/8370812.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!