为什么用二进制补码表示数值范围比原码多一个呢?
为什么用二进制补码表示数值范围比原码多一个呢?例如:用8位二进制原码表示的范围[一个符号位]-127~+127而用其补码表示则是-128~+127---->1000000...
为什么用二进制补码表示数值范围比原码多一个呢?
例如:用8位二进制原码表示的范围[一个符号位]
-127~+127
而用其补码表示则是-128~+127 ---->10000000~01111111,本人不明白为什么10000000就是表示-128,请详尽其因~谢谢!!! 展开
例如:用8位二进制原码表示的范围[一个符号位]
-127~+127
而用其补码表示则是-128~+127 ---->10000000~01111111,本人不明白为什么10000000就是表示-128,请详尽其因~谢谢!!! 展开
6个回答
展开全部
在二进制中,对十进制0和十进制-0取补码,分别是0000000和10000000,而0和-0是相等的,因此为了增大表示范围,强制认为10000000为-128。这样就多表示了一个数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以像我这样理解:把-128-127分成两部分-128-(-1)为一部分,0-127为另外一部分,这样的话 不就对称了吗?两边都有128个数
记住一个规则,求一个数的补码的办法:取反加1比如:01111111为127那么-127的补码(取反加1)为10000001然后在减1就变成了10000000,-127减1之后就为128了
为什么求一个负数的补码的方法是求反加1呢?
01111111+ 127+
10000000= -128=
11111111 -1
01111111+
10000001=
00000000
所以求一个负数的补码的方法是求反加1(对什么求反,对负数对应的正数的原玛求反
记住一个规则,求一个数的补码的办法:取反加1比如:01111111为127那么-127的补码(取反加1)为10000001然后在减1就变成了10000000,-127减1之后就为128了
为什么求一个负数的补码的方法是求反加1呢?
01111111+ 127+
10000000= -128=
11111111 -1
01111111+
10000001=
00000000
所以求一个负数的补码的方法是求反加1(对什么求反,对负数对应的正数的原玛求反
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
补码 10000000,表示多大?
这个八位的补码,代表的是:-128。
-------------------------
-128,有八位的补码,并没有八位的原码和反码。
因为,原码和反码的定义,都是有缺陷的:
一个数字零,它们却都定义了两个编码!
所以,八位的原码反码,只能表示-127 ~ +127。
无法表示-128。
因此,用“取反加一”求-0 或-128 的补码,都是行不通的。
同样,用“取反加一”求补码 1000 0000 对应的原码,也是不灵的。
-------------------------
求补码的正规做法,是使用定义式:
当 X >= 0, [ X ]补 = X; 零和正数不用变换。
当 X < 0, [ X ]补 = X + 2^n。 n 是补码的位数。
这个定义式,是通用的。你可以在书上找到的。
那么,[-128]补 = -128 + 2^8 = 1000 0000 (二进制)。
所以,八位的补码 1000 0000,就是代表数值-128。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
原码的0是有两种表示方式-0和0
而补码的0只有一种表示方式
这就是区别为什么二进制补码表示数值范围比原码多一个
而补码的0只有一种表示方式
这就是区别为什么二进制补码表示数值范围比原码多一个
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询