位运算实现加减法
原标题:位运算实现加减法
主题:位运算实现加减法
目标:讲清楚两种算法的实现;刻意练习:教程,细致完整
目标读者:了解基本位运算,并能读懂java代码的人
# 位运算实现加减乘除
计算机底层的加减乘除就是由位运算实现的。
理解它们,可以帮助我们更好的理解特有的现象,比如为什么整形除以整形的结果也是整形。
今天时间有限,只能先来加减了。
## 加法
异或运算,相当于无进位相加。
0^1=1,0+1=1
0^0=0,0+0=0
1^1=0,1+1=2,二要进一,所以是10,原位置上还是0,就相当于把进位信息给抹去了。
既然进位信息被抹去了,就要想办法把进位信息加回来。
0101
0011
&
0001
两个数字与运算,得到的结果相当于记录了进位信息,因为只有两个数字都是1的时候,结果才是1。也只有两个数字都是1的时候,相加才用进位。
但进位信息的位置不对,要往前移一位,也就是左移。
所以,进位信息的最终结果为:0001<<1=0010。
把无进位相加的结果加上进位信息,就是最终加法的结果。
而且,当进位信息为0的时候,无进位相加^0=进位相加。
所以,我们的目标就是一直重复上面的操作,直到进位信息变成0。
我们拿上面的两个数当例子。
一、异或
0101
0011
^
0110
二、与运算,并左移一位
上面算过了,结果是
0010
三、一二步结果,异或
0110
0010
^
0100
四、一二步结果,与运算,并左移一位
0110
0010
&
0010
<<1
0100
五、三四步结果,异或
0100
0100
^
0000
六、三四步结果,与运算,并左移一位
0100
0100
&
0100
<<1
1000
七、五六步结果,异或
0000
1000
^
1000
八、五六步结果,与运算,并左移一位
0000
1000
&
0000
<<1
0000
好,这时候,进位信息为零了。那第七步的结果就是结果。
不放心的话,还可以再拿第七步和第八步的结果再异或一下。
1000
0000
^
1000
按照之前的推理,无进位相加^0=进位相加。
即a^0=a+0,所以,任何数和零异或都会等于它本身。
验算一下结果,确实是没错的。
0101(5)
0011(3)
+
1000(8)
接下来上代码:
```java
public static int add(int a, int b) {
int result = 0;
while (b != 0) {
result = a ^ b;
b = (a & b) << 1;
a = result;
}
return result;
}
```
## 减法
a+b=a+(-b),所以减法可以延用加法的逻辑。
只需要多取一个相反数就好了。
相反数的位运算为,取反+1。
上代码
```java
public static int oppositeNumber(int num) {
return add(~num, 1);
}
public static int minus(int a, int b) {
return add(a, oppositeNumber(b));
}
```
字数:不统计
耗时:1小时30分
··················END··················
相关文章
-
智东西晚报:马云获授比利时王国大将军级皇冠勋章马斯克:SpaceX将发射可重复利用飞船
-
欧洲船企MJP推出三种新尺寸X系列喷水推进器
-
首例“微信赎金”病毒,弹二维码索要110元,腾讯火绒发布“真·解密工具”
-
Lightroom CC现已支持新iPhone/iPad
-
东莞女工“投诉”阿里小二!竟是因为天猫双11
-
【钛晨报】瑞幸再收退市通知;“孟晚舟引渡案”日程确定,8月17日恢复引渡听证会;德法院裁定Facebook需遵守监管命令:限制收集用户数据
-
直播电商三年浮沉:流量、分工、整合、模式分化
-
荣耀8X系列出货量破千万的启示:品质够硬核才可能赢得用户
-
春节不涨价,床位15元一天,新“城市留守儿童”如何过节?
-
她曾在春晚上给赵丽蓉当宫女,后被张艺谋成功捧红,今现状如何?
-
ThoughtWorks中国的社会使命
-
开业半天被买崩,Costco为什么这么火?
-
京东金融被指偷保存用户截图,这或许是个bug,但问题不小
-
微信大改版,只针对 iOS 用户?安卓内测开启!
-
亚马逊优异财报后股价却下跌这是它的盛世隐忧?
-
跨境知道快讯:eBayFulfillment开启
-
青桔单车与国网什马合作,将共同运营共享电单车业务
-
把握数字化浪潮,「因爱科技」升级传统线下教培机构
-
投资超110亿元!白云又有重大项目落地,20家企业抢先进驻
-
为了辨别假鞋,耐克申请了一项区块链技术专利......
-
力荐!直呼奥利给!这8个视频压缩神器你不得不知。
-
gtx560相当于现在什么显卡
-
金华市婺城区局:税惠护航企业在“数字化”春天大放异彩
-
别人都在调整花呗还款日,为什么你不行?听听内行人的回答
-
外媒称郭台铭最早于本周退休,鸿海或因此陷入争斗|6月20日坏消息榜
-
轻松筹——走在行业风口的“健康保障卫士”
-
深度资讯|搜狗依旧是御用搜索引擎,微信打的什么算盘?
-
【虎嗅晚报】马云:数学考1分是事实,但我非常敬畏数学
-
大神们都藏起来的25个编程技巧!新手小白绝对不知道