什么是补语(到底什么是补语)
总结
首先,介绍一个前提。在计算机中,数字是以二进制存储的,也就是我们看到的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。
总结一下:补数计算的用途是通过加法实现减法,利用计算机存储位数有限,超过溢出,丢失最高位。
我不知道哪个伟大的科学家发明了补码。前人种树,后人乘凉顶礼膜拜。
以上就是由优质生活领域创作者 深圳生活网小编 整理编辑的,如果觉得有帮助欢迎收藏转发~
本文地址:https://www.szbubu.com/1344528.html,转载请说明来源于:深圳生活网
声明:本站部分文章来自网络,如无特殊说明或标注,均为本站原创发布。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。分享目的仅供大家学习与参考,不代表本站立场。