8 位的机器数代表补码时,对应的真值范围是-128~127。
--正确。
1000 0000 这个代表-128的补码。
--欠妥。应该说:
1000 0000 这“是”-128 的补码。
-------------
用 8 位的原码和反码,来代表数值,最小值都是-127。
而用补码来表示数值,最小值,就是-128。
补码,比原码和反码,能多表示一个数值。
这是因为:原码和反码的定义,就是不合理的。
一个零,它们都编造了两个代码。
所以,计算机中,根本就不用它们。
那么,你从原码反码代表的最小值,是不能导出补码最小值的。
“原码反码取反加一符号位不变”,在这里是不好用的。
你必须用“补码的定义式”来求证,你才能理解:
【 1000 0000 这“就是” -128的补码。】
谢谢,但是.......
我觉得-128不能用8位表示出来,因为第8位上为1才能表示绝对值为128,然后再加符号位,所以我觉得至少要9位(所以通常就需要16位)
看到你的一个回答是这样的:
-128就是要+128的原码全部取反再加1:
+128的原码:[00000000][10000000]
取反就得到:[11111111][01111111]
再加1得到了:[11111111][10000000],这就是 -128的补码
我觉得这才是对的,要16位才能表示-128,你觉得呢?
原码在8为情况下是不能表示-128的,至少需要9位才行!
补码表示范围比原码多一个数,恰恰就是这个-2^(n-1)。这个数你不能通过原码转换得到!