什么是补码(补码到底是个什么东西)

什么是补码(补码到底是个什么东西)

什么是补语(到底什么是补语)

总结

首先,介绍一个前提。在计算机中,数字是以二进制存储的,也就是我们看到的2,而在计算机中,存储的是10。加法运算2+1=3在计算机中是这样的(这里假设计算机存储4个二进制数)0010+0001=0011。

可以看出,4是二进制数,可以表示的最大数是1111,就像两个十进制数表示的最大数是99一样。如果添加时结果超过存储容量怎么办?例如,9+9=18的二进制表示为:1001+1001=10010。但是因为只能存储4位数字,最高的数字丢失,结果变成0010,也就是2。此时,发生了溢出。做运算时避免数值溢出(当然现在电脑里存储的数字是64位,不用担心日常使用)

运算不仅包括加法,还包括减法、乘法和除法。乘法是多重加法,除法是多重减法。那么如何实现减法呢?一开始,计算机只能做加法。这时候有人想让他们直接做减法,也有人想通过加法做减法。最后,后者先给出解决方案。(只是我想象的场景)

减法是通过加法实现的

请记住,四位二进制数表示的最大数字是15,当发生溢出时:

16 = & gt二进制:10000 = >: 0

17 = & gt二进制:10001 = >:一

显然,去掉最高位等于减去16

那么我们可以用加法溢出来实现减法吗?让我们简单地把它推下去:

9-2=7如果要实现9+x=7,那么利用溢出原理,就必须实现9+x=7+16=23。简单解一下方程x=23-9=深圳生活网14,很好,来验证一下:

9+14的二进制表示为:1001+1110=10111,最高位溢出,结果为:0111为7,完美。

问题来了:如何把前2名变成14名?也就是说,二进制0010转换为1110。他们是什么关系?

伟大的数学科学家的前辈总结了这些规律。发明了深圳生活网补语和补语的概念。上面转换后的补码是14。

原始代码= >:按位反转= >:基数减一补码

逆码= >:加1 = >:补码

虽然不知道怎么找出这个规律,但是经过无数次验证,确实如此。

引入负数

引入负数的概念时,为了表示正负,第一位指定为符号位(0为正,1为负)。因为符号位的引入,原来的4位数字和可以表示的最大值变成了0111。

因为负数的引入,现在所有的减法都可以实现为加法,9-2=9+(-2),或者9+(-2)=9-2。计算仍然是通过补码实现的。

负数的补码是:符号位不变,按位反相,加1

正数的补码是:本身

负数的补数很容易理解,就是上面总结的用加法实现减法的规律。为什么正数的补数本身?看刚才分析的减法,只有被除数转换了,被除数没有变化。很容易理解。其实也是为了深圳生活网I处理的目的,引入补码后,可以用一套加减规则来计算正负数。

举一个简单的实验:

2+(-4)=-2

-4 = >;二进制表示:1100 = >:补码:1100

2 = & gt二进制表示:0010 = >:补码:0010

1100+0010=1110(补码)

将计算结果转换为原始代码1010,-2就可以了

然后,就出现了一个尴尬的问题。正数为0: 0000,负数为1,000,是同一个数字,但是用补码替换后会发现是同一个数字:0000。

总结一下:补数计算的用途是通过加法实现减法,利用计算机存储位数有限,超过溢出,丢失最高位。

我不知道哪个伟大的科学家发明了补码。前人种树,后人乘凉顶礼膜拜。

原码,补码,反码详解

以上就是由优质生活领域创作者 深圳生活网小编 整理编辑的,如果觉得有帮助欢迎收藏转发~

分享到 :
相关推荐

Leave a Reply

Your email address will not be published.