你好 不知道你是否看过唐朔飞版的计算机组成原理 上面说8位的机器数代表补码时,对应的真值范围是-128~127
4个回答
展开全部
8 位的机器数代表补码时,对应的真值范围是-128~127。
--正确。
1000 0000 这个代表-128的补码。
--欠妥。应该说:
1000 0000 这“是”-128 的补码。
-------------
用 8 位的原码和反码,来代表数值,最小值都是-127。
而用补码来表示数值,最小值,就是-128。
补码,比原码和反码,能多表示一个数值。
这是因为:原码和反码的定义,就是不合理的。
一个零,它们都编造了两个代码。
所以,计算机中,根本就不用它们。
那么,你从原码反码代表的最小值,是不能导出补码最小值的。
“原码反码取反加一符号位不变”,在这里是不好用的。
你必须用“补码的定义式”来求证,你才能理解:
【 1000 0000 这“就是” -128的补码。】
展开全部
没有问题,可以通过补码定义式推出这个结论。
一般对于字长为N为的补码数,其最小值二进制代码形式为:1000000...000,长度共N位
真值大小为:-2^(n-1)
n=8带入上式,得最小值=-2^7=-128
一般对于字长为N为的补码数,其最小值二进制代码形式为:1000000...000,长度共N位
真值大小为:-2^(n-1)
n=8带入上式,得最小值=-2^7=-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)。这个数你不能通过原码转换得到!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
嗯,你是不是觉得转化为真值时有问题,感觉少一位,计算机运算就是补码,不用转化。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询