计算机中为什么用补码来表示有符号数?

2025-04-13 18:32:26
推荐回答(3个)
回答1:

可以通过补码运算,通过最高位和次高位的进位相异或可以判断计算结果是否溢出。

计算机中的有符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。

在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。

正整数的补码是其二进制表示,与原码相同。

例:+9的补码是00001001。(备注:这个+9的补码是用8位2进制来表示的,补码表示方式很多,还有16位二进制补码表示形式,以及32位二进制补码表示形式,64位进制补码表示形式等。每一种补码表示形式都只能表示有限的数字。)

负数解释:

求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。

同一个数字在不同的补码表示形式中是不同的。比如-15的补码,在8位二进制中是11110001,然而在16位二进制补码表示中,就是1111111111110001。以下都使用8位2进制来表示。



回答2:

因为,所谓的补码,它就是一个“数”,所以,就可以用它进行算术运算。

而原码和反码,都不是“数”,而是人造的“码”。它们都有两个零,所以,原码和反码就都是“乱码”,因此,也就不能用它们进行计算了。如果再让它们的符号位也来参加运算,计算结果就是一团糟!

因此,就必须使用补码表示有符号数,绝不能用原码和反码。

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

大家都知道,计算机中只有 1 和 0,既没有正负号,也没有小数点。 所以,计算机中的数,就只有二进制的正整数,当然还有零。 世界上千奇百怪的各种信息,在计算机中,都是用【零和正整数】表示的。 人类用的数字,有正有负还有零,也必须用【零和正整数】来表示了,并没有别的花样供你选择。

负数,用“正整数”表示时,就称为:负数的补码。 一个正整数,怎么能表示负数呢? 要注意,书上有这么一句话:两个补码相加,如果最高位符号位有进位,则进位被舍弃。 舍弃进位】,这才是补码的根源所在!

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

你看十进制数加法运算吧:27 + 99 = (一百) 26。

如果你弄丢了进位,就少算了 100,你再加 99,它也就是:-1。 

此时,就变成了减法运算:27-1 = 26 !

在计算机中,舍弃进位,会怎样?

● 正数,就能当负数使用。 这些正数,就叫做“负数的补码”。

● 利用加法,也就能完成减法运算。 减法器,当然也就可以省略了。

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

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

出现进位,就是:2^8 = 256。

如果丢弃了进位,+255 就是:-1。

同理,254 (1111 1110),就是:-2。

。。。

最后,128 (1000 0000),就是:-128。

以上这些正数,都能代替负数,进行算术运算。它们就被称为:负数的补码。

换算公式:[ X ]补码=2^n+X,n 是补码的位数。

------

正数,不用转换,也不许做任何转换,必须直接去参加算术运算。

所以,零和正数,并没有补码。当然也可以说:零和正数的补码,就是它们自己。

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

由上面的介绍可知:补码,与符号位原码反码取反加一,并无半点关系。

只要懂得了“舍弃进位”,就能理解补码的来源和存在意义。

如果从符号位原码反码取反加一开始学补码,就会掉到沟里去了!

即使你把那些都背熟了会用了,你也弄不懂:加法运算,怎么就变成减法了!

回答3:

不为什么。
就是因为补码好用。