位运算实现加减法
原标题:位运算实现加减法
主题:位运算实现加减法
目标:讲清楚两种算法的实现;刻意练习:教程,细致完整
目标读者:了解基本位运算,并能读懂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··················
相关文章
-
董明珠与雷军难说胜负
-
在成王败寇以外
-
看得见摸不着数字藏品“入侵”现实世界
-
苹果最强女高管宣布离职!年薪曾是库克8倍
-
加入脸赋家乡公会,专享第一波红利
-
天猫双11又破纪录!进口产品中,国人最爱日货
-
公安部严打自媒体“网络水军”违法犯罪;《复联4》发布首款预告片;Facebook因数据问题被罚款 | 猬报
-
热点 | 呦呦鹿鸣回应《甘柴劣火》被质疑抄袭 :3次注明来自财经网
-
娃哈哈跨界智能机器人,74岁的宗庆后在下一盘大棋?
-
企鹅号将携手MCN机构、创作达人探索竖屏短剧及节目
-
最前线|日韩互将对方移出贸易白名单,三星与海力士原料库撑不过两个月
-
致许家印董事长的道歉信:我不该说恒大有水军
-
搜狗季报图解:净利达2.83亿与腾讯续签微信合作
-
云计算的春节战场:从“人肉”到智能
-
8点1氪|快手今年内扩招一万人;京东4.5亿元入股凯撒旅业;iPhone12最低定价或在600-700美元
-
海南省崖州湾种子实验室启动2021年度揭榜挂帅项目
-
“妖娆”的特斯拉,能否持续保持飙升?
-
网络互助风口再起,相互宝、水滴互助两大生态各自发力
-
8点1氪|谷歌推出订阅服务GooglePlayPass;腾讯并表芬兰游戏公司Supercell;拼多多拟发行8.75亿美元可转债
-
锤子官方微博变更认证信息,字节跳动将其100%收入囊中
-
挂羊头卖狗肉,亚马逊产品页面“迷惑”行为大赏
-
10美元的买卖,苹果能成吗?
-
腾讯或将控股美国版“贴吧”reddit,海外战头条扳回一城?
-
勒索病毒盯上二维码支付;优酷总裁杨伟东因贪腐被查
-
中国天眼遇到暴雨变成“汤锅”?科研人员告诉你什么叫做高科技
-
旺旺变了!卖衣服,卖小馒头沙发,还计划和天猫开发新品
-
女微商自称“阿里离职高管”被打脸还想请马云评评理
-
智造+V课堂06期预告|干货分享邀您一起探究成车组装行业的数字化发展奥秘
-
广东省车联网产业联盟岳浩副主席出席中国(宁波)车联网产业发展大会