计算机中为什么二进制补码10000000可以表示-128?怎么推出来的? 10000000要转化

计算机中为什么二进制补码10000000可以表示-128?怎么推出来的?10000000要转化成原码先减1,那样不就把符号位减没了吗?... 计算机中为什么二进制补码10000000可以表示-128?怎么推出来的?

10000000要转化成原码先减1,那样不就把符号位减没了吗?
展开
 我来答
匿名用户
2016-11-23
展开全部
将其八位全部取反,得到01111111, 然后加1,得到10000000. 将该数看作无符号数,值为128, 故计算机中的10000000表示的是-128。
最高位(即符号位)为1的8位有符号数有128个,故可表示128个负数;最高位为0的8位有符号数有128个,但全0的那个表示数0,所以总共只能表示127个正整数.
追问
为什么要取反加1呢,不明白
沙里波特
2021-03-15 · TA获得超过5251个赞
知道大有可为答主
回答量:1.1万
采纳率:95%
帮助的人:640万
展开全部
什么是补码?怎么求补码?
看看书,就会知道,补码,是有严格定义的。

按照定义来求补码,就用不着涉及原码反码。

如果,你非要用求反加一的做法,就难免碰上原码反码。

但是,的八位码长的限制下,-128,既没有原码,也没有反码。

这时,你还要用求反加一的做法,就一定会碰的头破血流。

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

按照补码的定义,负数的补码,定义如下:

[ X ]补 = 模-| X |

按照定义,-128,如下求补码。

[-128]补 = 256-|-128| = 128

写成二进制,就是:1000 0000。

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

这就是详解。

简不简单? 意不意外?

是不是比“求反加一”更方便?

利用定义,可以求任何负数的补码。
但是,多数人,都是推崇“求反加一”的。
你们这些人,都是被人忽悠瘸了。呵呵

如此简单的定义、方法,你们不学、不用,

偏要去钻死胡同,呵呵

使用求反加一!!!

你们能找到-128 的原码、反码吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kyotrue
2016-11-23 · TA获得超过1.5万个赞
知道大有可为答主
回答量:2.3万
采纳率:75%
帮助的人:6854万
展开全部
符号位是1啊,数据是全0,表示-128
公式我忘了,反正8位有符号整数,带符号位负数+对应正数=100000000(后面8个0)
虽然10000000+10000000=100000000,所以对应是-128
1FFFFFFF+00000001=100000000,所以对应-1
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2022-09-14 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部

补码 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。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
盼兰八
2022-01-23 · TA获得超过1833个赞
知道小有建树答主
回答量:409
采纳率:91%
帮助的人:17.5万
展开全部
这是一个非常特殊的带符号位二进制编码数,表示的是十进制的-128;
补码:1000 0000;
反码:补码减1,1000 0000-1=1111 1111(低位向高位逐次借1,符号位保持不变);
原码:反码取反,符号位保持不变,可推出原码为1000 0000;
从上面的推导中我们发现了一个很有趣,很有意思的现象,那就是这个负数的补码和原码居然是一样的,都是1000 0000,从原码最“原始”的理解,这个数“应该”是表示十进制的-0,那么问题出来了,8位带符号位的二进制编码数0000 0000也表示十进制的0(-0也是0),那岂不是有两个8位二进制编码数都表示十进制的0吗?有冲突了!为了解决这一问题,计算机编码领域统一明文规定,这个补码表示十进制纯数学结果128的负数,也就是-128,以避免出现-0的情况
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式