为什么负0的补码是00000000呢?它的反码加上1后是100000000,那个1哪去了呢?

2025-05-22 17:54:30
推荐回答(2个)
回答1:

原码,用最高位代表正负符号,这想法,就太简单了。

因此,就造成了混乱。

天下,只有一个零。但是在原码中,却编了两个码!

按照码长八位,不但多弄了一个-0,还少了一个-128。

这就想要上天哪!

那么,求-0 的补码,就弄出来了:0 000 0000。

  负零,不是负数吗? 符号位,不应该是 1 吗?

此外,求-128 的补码,也无处下嘴!

  因为,根本就找不到-128 的原码!

由此可知,原码本身,就是胡编乱造的,无法应用。

反码,也是这样的。

所以,计算机,根本就无法原码和反码。

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

其实,补码,就是补码,与原码反码,毫无关系。

补码,它就是一个“代表负数”的正数。

使用了补码,计算机中,就没有负数了,

随之,计算机中,也就没有了减法运算。

那么,计算机只要配置一个加法器,就可以走遍天下了。

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

补码(一个正数)怎么就能代表负数呢?

你看 10 进制: 28 - 1 = 27

       28 + 99 = (一百)  27

只要你限制在2 位数,超过 2 位就舍弃!

那么,+99 和-1,就是等效的。

同样,+98 就能代表-2。

。。。

这些正数,就叫做“负数的补数”。

计算公式,你肯定能推出来: 补数 = 负数 + 10^2。

正数,已经就是正数了,必须直接参加运算,不许变化。

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

在计算机中,把 8 位 2 进制,称为一个字节。

那么有:

-1 的补码,就是:-1 + 2^8 = 255 = 1111 1111 (二进制)

-2 的补码:-2 + 256 = 254 = 1111 1110。

。。。

-128 的补码:-128 + 256 = 1000 0000。

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

有了这些,不就完事了吗?

原码反码符号位不变取反加一。。。还弄这些干嘛?

你想想老外的数学水平吧,弄这些个骚操作,不奇怪!

如果从原码反码,开始学习补码,就弄不明白【补码的意义】。

回答2:

为了保证0编码的唯一性,
+0和-0是相同的,所以:
0000 0000是:0;
1000 0000是:-128;
因此8位取值范围:-128~127。
【提示】"-1"不是:1000 0001;而是:1111 1111。