LeetCode:位运算实现加法
Posted 子烁爱学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode:位运算实现加法相关的知识,希望对你有一定的参考价值。
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:位运算实现加法的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode]剑指 Offer 65. 不用加减乘除做加法
剑指 Offer 65. 不用加减乘除做加法(位运算,Java)