+ -
当前位置:首页 → 问答吧 → 大家说说-128的补码到底是怎么实现的哦?是人为规定的吗?

大家说说-128的补码到底是怎么实现的哦?是人为规定的吗?

时间:2011-10-14

来源:互联网

长期以来,我一直知道10000000若是补码,表示的是-128,但是,我一直不是很明白,也看过很多种教科书,都是一笔带过,没说清楚,当年教授我们计算机原理的那个小老头,也没说清楚。我一直很想知道为什么这个数字表示-128而不是-0?

按照我的理解, 这个数字,若是补码,更像是-0的,但是,-0没有这个说法,就是0 ,但是0的补码应该是00000000的。

作者: liujun3512159   发布时间: 2011-10-14

我的理解:补码是人为设置的.这样设置的好处之一是, x + (-x) = 0
也就是说, 100 + 100的补码 = 0 , (-100) + (-100的补码) = 0
第二,这样设计,可以简化微处理器的电路设计,提高运算效率.
不知道说的对不对.

作者: gsy999   发布时间: 2011-10-14

如果10000000存放在机器里面了,那么机器读这个数据的时候就会先看到这个最高位“符号”位!
明显,符号位是1!
那么机器在显示这个数据之前就要对这个数据进行一次求补。
1000 0000 取反得: 0111 1111 ,再加1得: 1000 0000 = 128 ,再添加上符号,就是-128了。

对于-128的机器表示,补码表示,我想是这样的!

-128的绝对值是128 ,即128的补码为原码(128为正数)= 1000 0000 
然后再对这个1000 0000取反得: 0111 1111 再加1得: 1000 0000 这个就是-128的补码表示了。

再说说补码的定义:
X是一个数,且:0》X》-2^n
则x的补=2^(n+1) - |x|

对于-128,上面的n中7!

继续关注!!!1


作者: abee23   发布时间: 2011-10-14

希望今天能在这里面听到更多的说法,能够很好的解释下这个问题。

作者: liujun3512159   发布时间: 2011-10-14

  (1)如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
  (2)如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。

显然计算机看到 1000 0000 是认为这个是负数!
然后对这个1000 0000 进行一次求补运算,得出这个结果的原码。这个原码是这个负数绝对值的原码,也是补码,因为正数的原码与补码是一样的。

然后结果就是求补后的原码对应的数再加上一个负号。


这样 1000 0000 就是-128了。

作者: abee23   发布时间: 2011-10-14

我也是一知半解,不见得说的对

但是有一点我有点印象
补码的推出有一个有点,就是可以避免+0和-0,0有两个表示方式的情况

所以你可以理解成在补码的世界里根本没有-0这个东西

所以1000 0000被视为补码时,没有歧义

作者: korekara88730   发布时间: 2011-10-14

呵呵,我也是一知半解

作者: liujun3512159   发布时间: 2011-10-14