为什么要引入补码?

如题所述

计算机中,只有补码,并没有原码和反码。


借助于补码,负数和减法,都可以转化成加法来进行运算。


那么,计算机的硬件,就可以简化了。


因此,在计算机中,只有加法器,并没有减法器。


------------------------


补码是怎么回事? 这得从“补数”谈起。


计算机所能计算的位数,是固定的,如八位机、16 位。。。


位数限定之后,就可以用“补数”代替负数,用加法实现减法运算。


如限定两位十进制,-1,就可以用 +99 代替。


   25 - 1 = 24


   25 + 99 = (一百) 24


舍弃进位,只取两位,这两种算法功能就完全相同。


99,就是-1 的补数。 计算公式:补数 = 一百+负数。


一百,是两位十进制数的计数周期。


-------------------------


计算机用二进制,补数,就改称为:补码。


八位二进制:0000 0000 ~ 1111 1111 (十进制 255)。


计数周期是:2^8 = 256。


求负数补码的计算公式,也是: 周期 + 该负数。


-1 补码就是:256 + (-1) = 255 = 1111 1111(二进制)。


用不存在的“原码反码取反加一”来求,也是这个结果。


正数,不用转换,直接参加运算。所以,正数自身就是补码。


-------------------------


举例说明,如: 5 - 7 = -2。


用补码计算的过程如下:


    5 的补码=0000 0101


    -7的补码=1111 1001


--相加-------------


   得   (1)  1111 1110 = -2 的补码


舍弃进位,只保留八位,这就实现了 5-7。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-05-13
没什么屌用,就是一种约定,人为定义的东西,就是大家都那么干,你也要那么干。
你可以理解其起鸡码,鸭码,屎码,只要知道那个的作用是进行负数运算就行了。
第2个回答  2021-03-12

第3个回答  推荐于2017-10-04
由于计算机存储的数据一般是有位数限制的,那么两个数相加如果超出位数,那么超出部分就会自动丢失。
补码的形式就是利用了这个特点,方法是,对于正数相加没有特殊的,如果溢出了是正常的,而对于正数加负数这样的运算,算法是不需要考虑参与运算数据的符号,直接两数进行二进制加的动作,结果也无需转换就是预期的,那么就需要将负数以补码形式存在,原理是这样,让一个数加上这个补码形式表现的负数时,由于溢出自动丢失的效果,结果与减去这个负数的绝对值是相同的,这就是补码存放负数的实质,是定点CPU计算方面的特色之一。
你可以实际演算一下,比如用4减去2,和用4加上补码表示的-2得到的结果是一致的。追问

计算时是不是同种码的?

追答

由于正数的补码就是其本身,所以负数用补码表示后,都是一致的编码计算。

本回答被提问者和网友采纳
相似回答