LeetCode:位运算实现加法
生活随笔
收集整理的這篇文章主要介紹了
LeetCode:位运算实现加法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
LeetCode:位運算實現加法
寫在前面
位運算符
實現加法的思路
兩個加數,比如5(101)和6(110),如何不用加法就能得出兩者之和呢?
我們知道二進制計算中,如果使用異或將會產生無進位的兩者之和,而兩數相與將會產生進位值!!!
可這樣又如何呢?
1 sum = 011 2 carry =1000?兩者繼續(xù)異或將會產生
?結果就出現了,此時無進位,所以進位為0時,sum將會為最終結果!因為此時不需要進位,異或運算就是最終結果!
優(yōu)質代碼
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
?
轉載于:https://www.cnblogs.com/MrSaver/p/8370812.html
總結
以上是生活随笔為你收集整理的LeetCode:位运算实现加法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python下载大文件
- 下一篇: [机器学习] 模型评价参数,准确率,召回