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