关于10000000如何表示-128的问题

2024-11-08 00:07:22
推荐回答(5个)
回答1:

1000 0000是-128的补码表示法。
由于一个字节的带符号数能表示的最大正数是0111 1111(最高位是符号位,0代表正数),这个数字是+127,不能表示+128,所以我们用"先计算-127的补码,再减掉1,得到-128的补码"的方法:
正数127的补码:0111 1111
127的反码:1000 0000
反码加1:1000 0001——这就是-127的补码
再减掉1:1000 0000——得到的就是-128的补码
所以,1000 0000在1个字节有符号数中,就代表-128。
如有不明白之处,请留言追问。

回答2:

这是一个很特殊的二进制编码数。
计算机编码中的8位二进制数1000 0000换算成十进制数是-128,而并不是-0,这是因为二进制数0000 0000换算成十进制数是0,如若这样,那么将会有两个二进制数都表示十进制的0,发生撞车的情况,这是一对矛盾的存在,所以将-0舍弃,保留0,而二进制编码的时候,1000 0000这个二进制数还是会出现,既然不能代表-0,那么这个二进制代码表示的是哪个十进制数呢?怎么办?所以编码时统一规定:这个数是负数,是个不带符号位的二进制数,所以1000 0000这个数从数学本身上来说,表示的是十进制128,但是在计算机编码中,表示的是十进制-128,以免与0撞车。

回答3:

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

回答4:

符号位是1啊,数据是全0,表示-128
公式我忘了,反正8位有符号整数,带符号位负数+对应正数=100000000(后面8个0)
虽然10000000+10000000=100000000,所以对应是-128
1FFFFFFF+00000001=100000000,所以对应-1

回答5:

8位二进制有符号数10000000按一般规则讲应表示-0,为了避免与00000000产生二义性,系统将10000000默认为-128,由于这个比较特殊,记住就行了。