最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

深入浅出:原码,反码,补码及减法

来源:懂视网 责编:小OO 时间:2024-10-14 12:08:06
文档

深入浅出:原码,反码,补码及减法

原码,反码,补码及减法介绍如下:众所周知,计算机内部是以二进制存储数据的,对于不同的数据类型可能存储的格式含义不一样。例如有符号整数,最高位是符号位,其余代表数值;那么它在计算机里要怎么运算表达呢,下面来一步步说一下。举个例子,1+1怎么表达呢。1的二进制表达为(为了方便用1个字节表示):00000001。那么1+1即表达为:00000001 + 00000001 = 00000010 = 2。是吧,这样子是对的,so easy。2.再接着看下面,2-1怎么表达呢。2的二进制为:00000010。-1的二进制为:10000001。那么:2-1=2+(-1)=00000010+10000001=10000011=-3。3.什么是原码。
推荐度:
导读原码,反码,补码及减法介绍如下:众所周知,计算机内部是以二进制存储数据的,对于不同的数据类型可能存储的格式含义不一样。例如有符号整数,最高位是符号位,其余代表数值;那么它在计算机里要怎么运算表达呢,下面来一步步说一下。举个例子,1+1怎么表达呢。1的二进制表达为(为了方便用1个字节表示):00000001。那么1+1即表达为:00000001 + 00000001 = 00000010 = 2。是吧,这样子是对的,so easy。2.再接着看下面,2-1怎么表达呢。2的二进制为:00000010。-1的二进制为:10000001。那么:2-1=2+(-1)=00000010+10000001=10000011=-3。3.什么是原码。

原码,反码,补码及减法介绍如下:

众所周知,计算机内部是以二进制存储数据的,对于不同的数据类型可能存储的格式含义不一样。例如有符号整数,最高位是符号位,其余代表数值;那么它在计算机里要怎么运算表达呢,下面来一步步说一下:

举个例子,1+1怎么表达呢?

1的二进制表达为(为了方便用1个字节表示):00000001

那么1+1即表达为:00000001 + 00000001 = 00000010 = 2

是吧,这样子是对的,so easy。

2. 再接着看下面,2-1怎么表达呢?

2的二进制为:00000010

-1的二进制为:10000001

那么:2-1=2+(-1)=00000010+10000001=10000011=-3

3. 什么是原码

维基百科的定义:原码(True form)是电脑运算的名词,是指“未经更改”的码。例如上面举的例子,2的二进制表达为00000010,00000010即是原码。

4.什么是补码

维基百科的定义:补码(英语:2's complement)是一种用二进制表示有号数的方法。

补码是根据原码规则计算而来的:

正数和0的补码:该数字本身。

负数的补码:将其除最高位(即符号位)取反再加1得出的。

那么什么是取反,0变成1,1变成0就是取码了。

举个例子,-1,原码是:10000001

第一步,除最高位取反,得到:11111110

第二步,加1:11111111

最后-1的补码即为:11111111

对了,在转换补码的过程中,还有步骤:取反。取反得出来的数,称为反码。

5.什么是反码

反码是一种在计算机中数的机器码表示。对于单个数值(二进制的0和1)而言,对其进行取反操作就是将0变为1,1变为0

反码跟原码是正数时,一样;负数时,反码就是原码符号位除外,其他位按位取反。

反码是在原码和补码转换过程中过渡的一种运算而已。知道了原码和补码

的转换,其实也就知道什么是反码了,只是把它抽象出来了。

6.减法到底是怎么做呢?

说完了原码,反码和补码,回到最开始的问题,到底怎么运算才对啊?个位数都算错可丢人了。

计算机内部采用补码来计算的。

i. 首先我们要把需要计算的转换成补码

2的原码是:00000010,由于是正数,补码即为本身:00000010。

-1的原码是:10000001,由于是负数,补码为:11111111

ii. 计算机内部是采用补码加法,统一了运算规则。例如把2-1看成是:2+(-1)。于是2-1实际为:

00000010 + 11111111 = 00000001 = 1

iii. 最终计算结果是正常的,对得起学过的小学数学了。

7. 究极原因:为什么非要补码?

在我阅读和思考的时候,很多思想是通过时钟循环来表达其本质。

我个人理解为公式的变换,相对容易理解。怎么说呢?我们推导一下下面的公式。

10-8=10+(-8)=10+(-1-8)+1=10+[(-1-8)+1]

来到这里,我们停一下。这个公式推导过来是等价的,看看方括号里面是不是和计算机内部计算取反+1很相似?

-1是二进制是:11111111,-8的原码是:10001000,反码是:11110111,(-1-8)除开高位的运算为:1111111-0001000=1110111,结合高位即为:11110111,即就是取反的结果,亦即(-1-8)的结果。

方括号里的实质即是[(取反)+1]=[补码],这就是为什么可以使用补码计算了。

文档

深入浅出:原码,反码,补码及减法

原码,反码,补码及减法介绍如下:众所周知,计算机内部是以二进制存储数据的,对于不同的数据类型可能存储的格式含义不一样。例如有符号整数,最高位是符号位,其余代表数值;那么它在计算机里要怎么运算表达呢,下面来一步步说一下。举个例子,1+1怎么表达呢。1的二进制表达为(为了方便用1个字节表示):00000001。那么1+1即表达为:00000001 + 00000001 = 00000010 = 2。是吧,这样子是对的,so easy。2.再接着看下面,2-1怎么表达呢。2的二进制为:00000010。-1的二进制为:10000001。那么:2-1=2+(-1)=00000010+10000001=10000011=-3。3.什么是原码。
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top