-128的二进制补码是怎么得来的?

2024-11-08 09:01:06
推荐回答(5个)
回答1:

补码10000000唯一的表示-128是一个规定,不需要推算,理由如下:

现在来推-128的补码:

-128的补码:10000000 - 10000000(+128没有符号位)=10000000

-128的反码:1111 1111(1000 0000 +1=1000 0000+1111 1111=1111 1111)

-128的原码:10000000(反码取反)

往回推:

-128的原码 10000000 (-128,进位被舍去)

-128的反码 11111111

-128的补码 10000000(11111111(反码) + 1=10000000,这里实际上真正相加的是11111111后面的7位,第1位是符号位始终不会变,所以,当进到第8位的时候,就表示溢出了,会被舍弃。0只有一个补码00000000,如果是这样,那么10000000就不会表示成-0的补码

即:补码1000 0000唯一的表示-128,在补码中用(-128)代替了(-0),所以补码的表示范围为: (-128~0~127)共256个.

注意:(-128)也有相对应的原码和反码, 它的反码是(11111111)原码仍然是(10000000)(-128)

扩展资料:

负数的补码就是对反码加1,而正数不变,正数的原码反码补码是一样的。

补码的得来:是为了让负数变成能够加的正数,所以,负数的补码=模-负数的绝对值。

比如:-1 补码:11111111(00000001,也就是-1的绝对值,取反加1得来)当一个数要减1的时候,可以直接加 11111111。

回答2:

10000000表示-128的补码,你可以理解为是一个特殊性。

各种8位二进制的表示法的数据范围如下:
原码: -127 ~ 127
反码: -127 ~ 127
补码: -128 ~ 127

补码运算:正数为原码本身,负数为原码取反加一
127为正数,其补码为原码0111 1111
-127为负数,其补码为原码0111 1111,取反1000 0000,加一,1000 0001。

根据这情况来看,表示-0,不是的,-0的原码是1000 0000补码是0000 0000。+0的补码也是0000 0000

于是就有了规定 1000 0000 定为 -128的补码
这种定法和上面数学层面的表述是一致的。
这样规定后,负数的补码在机器中就好算了。
在约定的范围内(-128-+127,对16位32位64位等扩大范围)
先将该负数取绝对值,再用二进制表示出这个绝对值 (不管符号位)
对该二进制数进行取反加一操作就得到负数的补码了
-128 绝对值是 128
128的二进制表示为:
1000 0000
取反
0111 1111
加1
1000 0000
这就是-128的补码
这种办法算出的结果符合“规定值”,规定而已。

回答3:

-128是人为规定的。
因为8位2进制中,存在 “-0”(1000 0000)和"0"(0000 0000),虽然“-0”也是“0”,但根据正、反、补码体系,“-0”的补码和“+0”是不同的,这样就出现两个补码代表一个数值的情况。为了将补码与数字一一对应,所以人为规定“0”一律用“+0”代表。同时为了充分利用资源,就将原来本应该表示“-0”的补码规定为代表-128。

回答4:

有人说我内容不规范,拜托,这个内容不是我原创的,难道没看到下面一行作者的原创声明吗????
————————————————以下为原回答————————————————
二进制下,有多少位数参加运算,模就是在 1 的后面加上多少个 0。
这个时候我们就可以尝试去解答本篇博客题目所提出的问题了——为什么(八位二进制中)-128的补码是10000000?
其实,我们可以这样理解:-128是一个负数,而负数的补码等于模减去该数的绝对值。所以-128的补码是它的“模”(即256)减去它的绝对值,即:
100000000 - 10000000 = 10000000
这样我们就解决了最基本的问题了。
————————————————
版权声明:本文为CSDN博主「一只野生饭卡丘」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:

回答5:

什么是补码?怎么求补码?
看看书,就会知道,补码,是有严格定义的。

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

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

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

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

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

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

 [ X ]补 = 模-| X |

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

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

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

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

这就是详解。

简不简单? 意不意外?

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

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

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

偏要去钻死胡同,呵呵

使用求反加一!!!

你们能找到-128 的原码、反码吗?