为什么负0的补码是00000000而不是11111111+1,谁能帮忙解释一下

如题所述

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

因此,就造成了混乱。

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

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

这就想要上天哪!

那么,求-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。

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

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

原码反码符号位不变取反加一。。。

老外数学不好,才会用这些个骚操作!

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

而且,还会在-0、-128 这里,走进死胡同,找不到出路。 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-06-22
如果按照原码取反加1的规则,那么(-0)的补码是(1000
0000补),那么1-0=(1)+(-0)=(0000
0001补)+(1000
0000补)=(1000
0001补)=(-127),这显然是不对的。所以(-0)的补码不能是1000
0000,只能是0000
0000。
其实用(1000
0000补)可以表示
(-128)也可以表示(128)也可以什么都不表示,但设计人员规定用它表示(-128)。
相似回答