为什么用二进制补码表示数值范围比原码多一个呢?

为什么用二进制补码表示数值范围比原码多一个呢?例如:用8位二进制原码表示的范围[一个符号位]-127~+127而用其补码表示则是-128~+127---->1000000... 为什么用二进制补码表示数值范围比原码多一个呢?
例如:用8位二进制原码表示的范围[一个符号位]
-127~+127
而用其补码表示则是-128~+127 ---->10000000~01111111,本人不明白为什么10000000就是表示-128,请详尽其因~谢谢!!!
展开
 我来答
小小知识馆
2020-03-15 · 用心分享每一个知识。
小小知识馆
采纳数:0 获赞数:39

向TA提问 私信TA
展开全部
这么理解:
2^7=128(因为有一位是符号为,所以由7位是数值位),但是机器中是从0开始表示的,所以:
正数是从 +0 ~ +127,刚好128个数字。
负数是从 -0 ~ -127,刚好128个数字。
但是补码中 +0 = -0 ,所以,-0这个位置可以空出来,因此就在负数的区域中多出一位,因此就把这一位进行平移,由原来的 -0~-127,变成 -1~-128,也还是128位。
也就是强制性的把补码的最小负数定义为 -2^7了。
36JTWS
2015-08-17 · TA获得超过493个赞
知道答主
回答量:76
采纳率:100%
帮助的人:23.6万
展开全部
在二进制中,对十进制0和十进制-0取补码,分别是0000000和10000000,而0和-0是相等的,因此为了增大表示范围,强制认为10000000为-128。这样就多表示了一个数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lailai1024
推荐于2017-10-13
知道答主
回答量:8
采纳率:0%
帮助的人:0
展开全部
可以像我这样理解:把-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(对什么求反,对负数对应的正数的原玛求反
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2022-09-14 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.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。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孤独歌颂者
推荐于2017-09-07 · TA获得超过4370个赞
知道小有建树答主
回答量:1257
采纳率:84%
帮助的人:436万
展开全部
原码的0是有两种表示方式-0和0
而补码的0只有一种表示方式
这就是区别为什么二进制补码表示数值范围比原码多一个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式