位运算实现加减法

主题:位运算实现加减法MAl每天发布大量与生活相关的资讯平台

目标:讲清楚两种算法的实现;刻意练习:教程,细致完整MAl每天发布大量与生活相关的资讯平台

目标读者:了解基本位运算,并能读懂java代码的人MAl每天发布大量与生活相关的资讯平台

主题:位运算实现加减法MAl每天发布大量与生活相关的资讯平台

目标:讲清楚两种算法的实现;刻意练习:教程,细致完整MAl每天发布大量与生活相关的资讯平台

目标读者:了解基本位运算,并能读懂java代码的人MAl每天发布大量与生活相关的资讯平台

# 位运算实现加减乘除MAl每天发布大量与生活相关的资讯平台

计算机底层的加减乘除就是由位运算实现的。MAl每天发布大量与生活相关的资讯平台

理解它们,可以帮助我们更好的理解特有的现象,比如为什么整形除以整形的结果也是整形。MAl每天发布大量与生活相关的资讯平台

今天时间有限,只能先来加减了。MAl每天发布大量与生活相关的资讯平台

## 加法MAl每天发布大量与生活相关的资讯平台

异或运算,相当于无进位相加。MAl每天发布大量与生活相关的资讯平台

0^1=1,0+1=1MAl每天发布大量与生活相关的资讯平台

0^0=0,0+0=0MAl每天发布大量与生活相关的资讯平台

1^1=0,1+1=2,二要进一,所以是10,原位置上还是0,就相当于把进位信息给抹去了。MAl每天发布大量与生活相关的资讯平台

既然进位信息被抹去了,就要想办法把进位信息加回来。MAl每天发布大量与生活相关的资讯平台

0101MAl每天发布大量与生活相关的资讯平台

0011MAl每天发布大量与生活相关的资讯平台

&MAl每天发布大量与生活相关的资讯平台

0001MAl每天发布大量与生活相关的资讯平台

两个数字与运算,得到的结果相当于记录了进位信息,因为只有两个数字都是1的时候,结果才是1。也只有两个数字都是1的时候,相加才用进位。MAl每天发布大量与生活相关的资讯平台

但进位信息的位置不对,要往前移一位,也就是左移。MAl每天发布大量与生活相关的资讯平台

所以,进位信息的最终结果为:0001<<1=0010。MAl每天发布大量与生活相关的资讯平台

MAl每天发布大量与生活相关的资讯平台

展开全文
MAl每天发布大量与生活相关的资讯平台

把无进位相加的结果加上进位信息,就是最终加法的结果。MAl每天发布大量与生活相关的资讯平台

而且,当进位信息为0的时候,无进位相加^0=进位相加。MAl每天发布大量与生活相关的资讯平台

所以,我们的目标就是一直重复上面的操作,直到进位信息变成0。MAl每天发布大量与生活相关的资讯平台

我们拿上面的两个数当例子。MAl每天发布大量与生活相关的资讯平台

一、异或MAl每天发布大量与生活相关的资讯平台

0101MAl每天发布大量与生活相关的资讯平台

0011MAl每天发布大量与生活相关的资讯平台

^MAl每天发布大量与生活相关的资讯平台

0110MAl每天发布大量与生活相关的资讯平台

二、与运算,并左移一位MAl每天发布大量与生活相关的资讯平台

上面算过了,结果是MAl每天发布大量与生活相关的资讯平台

0010MAl每天发布大量与生活相关的资讯平台

三、一二步结果,异或MAl每天发布大量与生活相关的资讯平台

0110MAl每天发布大量与生活相关的资讯平台

0010MAl每天发布大量与生活相关的资讯平台

^MAl每天发布大量与生活相关的资讯平台

0100MAl每天发布大量与生活相关的资讯平台

四、一二步结果,与运算,并左移一位MAl每天发布大量与生活相关的资讯平台

0110MAl每天发布大量与生活相关的资讯平台

0010MAl每天发布大量与生活相关的资讯平台

&MAl每天发布大量与生活相关的资讯平台

0010MAl每天发布大量与生活相关的资讯平台

<<1MAl每天发布大量与生活相关的资讯平台

0100MAl每天发布大量与生活相关的资讯平台

五、三四步结果,异或MAl每天发布大量与生活相关的资讯平台

0100MAl每天发布大量与生活相关的资讯平台

0100MAl每天发布大量与生活相关的资讯平台

^MAl每天发布大量与生活相关的资讯平台

0000MAl每天发布大量与生活相关的资讯平台

六、三四步结果,与运算,并左移一位MAl每天发布大量与生活相关的资讯平台

0100MAl每天发布大量与生活相关的资讯平台

0100MAl每天发布大量与生活相关的资讯平台

&MAl每天发布大量与生活相关的资讯平台

0100MAl每天发布大量与生活相关的资讯平台

<<1MAl每天发布大量与生活相关的资讯平台

1000MAl每天发布大量与生活相关的资讯平台

七、五六步结果,异或MAl每天发布大量与生活相关的资讯平台

0000MAl每天发布大量与生活相关的资讯平台

1000MAl每天发布大量与生活相关的资讯平台

^MAl每天发布大量与生活相关的资讯平台

1000MAl每天发布大量与生活相关的资讯平台

八、五六步结果,与运算,并左移一位MAl每天发布大量与生活相关的资讯平台

0000MAl每天发布大量与生活相关的资讯平台

1000MAl每天发布大量与生活相关的资讯平台

&MAl每天发布大量与生活相关的资讯平台

0000MAl每天发布大量与生活相关的资讯平台

<<1MAl每天发布大量与生活相关的资讯平台

0000MAl每天发布大量与生活相关的资讯平台

好,这时候,进位信息为零了。那第七步的结果就是结果。MAl每天发布大量与生活相关的资讯平台

不放心的话,还可以再拿第七步和第八步的结果再异或一下。MAl每天发布大量与生活相关的资讯平台

1000MAl每天发布大量与生活相关的资讯平台

0000MAl每天发布大量与生活相关的资讯平台

^MAl每天发布大量与生活相关的资讯平台

1000MAl每天发布大量与生活相关的资讯平台

按照之前的推理,无进位相加^0=进位相加。MAl每天发布大量与生活相关的资讯平台

即a^0=a+0,所以,任何数和零异或都会等于它本身。MAl每天发布大量与生活相关的资讯平台

验算一下结果,确实是没错的。MAl每天发布大量与生活相关的资讯平台

0101(5)MAl每天发布大量与生活相关的资讯平台

0011(3)MAl每天发布大量与生活相关的资讯平台

+MAl每天发布大量与生活相关的资讯平台

1000(8)MAl每天发布大量与生活相关的资讯平台

接下来上代码:MAl每天发布大量与生活相关的资讯平台

```javaMAl每天发布大量与生活相关的资讯平台

public static int add(int a, int b) {MAl每天发布大量与生活相关的资讯平台

int result = 0;MAl每天发布大量与生活相关的资讯平台

while (b != 0) {MAl每天发布大量与生活相关的资讯平台

result = a ^ b;MAl每天发布大量与生活相关的资讯平台

b = (a & b) << 1;MAl每天发布大量与生活相关的资讯平台

a = result;MAl每天发布大量与生活相关的资讯平台

}MAl每天发布大量与生活相关的资讯平台

return result;MAl每天发布大量与生活相关的资讯平台

}MAl每天发布大量与生活相关的资讯平台

```MAl每天发布大量与生活相关的资讯平台

## 减法MAl每天发布大量与生活相关的资讯平台

a+b=a+(-b),所以减法可以延用加法的逻辑。MAl每天发布大量与生活相关的资讯平台

只需要多取一个相反数就好了。MAl每天发布大量与生活相关的资讯平台

相反数的位运算为,取反+1。MAl每天发布大量与生活相关的资讯平台

上代码MAl每天发布大量与生活相关的资讯平台

```javaMAl每天发布大量与生活相关的资讯平台

public static int oppositeNumber(int num) {MAl每天发布大量与生活相关的资讯平台

return add(~num, 1);MAl每天发布大量与生活相关的资讯平台

}MAl每天发布大量与生活相关的资讯平台

public static int minus(int a, int b) {MAl每天发布大量与生活相关的资讯平台

return add(a, oppositeNumber(b));MAl每天发布大量与生活相关的资讯平台

}MAl每天发布大量与生活相关的资讯平台

```MAl每天发布大量与生活相关的资讯平台

字数:不统计MAl每天发布大量与生活相关的资讯平台

耗时:1小时30分MAl每天发布大量与生活相关的资讯平台

··················END··················MAl每天发布大量与生活相关的资讯平台

MAl每天发布大量与生活相关的资讯平台

也许你还喜欢

ups不间断电源原理分析

当前在电源市场上,所销售的电源类型较多,不同类型的电源,相应的功能与作用有所不同。在超

空间背景音乐怎么添加图文教程分享

怎样免费添加QQ空间背景音乐其实步骤也不多,很简单,主要有以下几个步骤,详情如下

万能转换器破解版怎么用?具体操作方

万能格式转换器是一款功能强大的格式转换软件,音频、视频、图片、光驱设备都可以通过万

rmvb转mp4格式转换器图文教程

在我们日常娱乐和日常工作中,现在网络上一些高清的视频一般都是rmvb格式的,而一些播放设

支付宝网络系统异常怎么解决

支付宝支付出现网络系统异常是因为IE浏览器设置Internet选项不恰当而导致的,去重新设置

win10蓝牙驱动破解版安装图文教程

win10蓝牙驱动怎么安装?请看下面具体操作方法。

微孔抛光镜面加工计数详解

一般来说,对于小孔微孔进行抛光,传统的加工方法可能会导致孔洞磨损,或者加工效果不理想。

短视频内容管理助手有哪些?怎么好用

随着短视频的普及,越来越多的人开始将大量的时间和精力投入到短视频的制作和分享中。因

模具设计学习知识分享

今天,我想谈谈我在模具设计CAD方面的一些心得体会。作为一个从事这个行业多年的工程师,

seo优化排名软件详细介绍

1. SEMrush SEMrush,一款广受好评的SEO神器,被誉为业内最佳的SEO分析工具。功能包括全