2s负零的补充

时间:2014-05-19 21:46:21

标签: bit-manipulation bit twos-complement complement

我有问题:你知道2s补语,所以你可以得到一个正数的负数,反之并加一个。 e.g。

8 Bit
121 = 0111 1001
 1st= 1000 0110
  +   0000 0001
      ---------
      1000 0111 --> -121 

现在如果我们有-0

零看起来是8位

0000 0000

所以减去0应该看起来

 1111 1111 + 0000 0001
= 10000 0000

但那是512

所以我认为我误解了一些事情

2 个答案:

答案 0 :(得分:1)

将我以前的评论扩展到问题

8位中的

1111 1111 + 0000 00010000 0000,第9位丢失,因为它没有位置。

而且,是的,否定的补充是积极的

-121 = 1000 0111
 1st = 0111 1000
   +   0000 0001
       ---------
       0111 1001 --> 121 

将它们想象成一个圆圈,在某一点上有0,一次加上1,你到达相反的点(8位为128),此时符号被切换,绝对值开始减小,例如:128 + 1 = -127,当您继续添加1时,该值将返回0并且圆圈已完成。

所以给定了一些位,你只有那么多位,没有更多,如果你想要对值进行签名,你的值实际上只有x-1位,因为最重要的位用于符号(0 - > +; 1 - > - )

答案 1 :(得分:0)

1 0000 0000b为256,而不是512.截断为8位,为0.

这是因为有两个补码,零为零。没有正面或负面的零点。

将其与一个补码或符号位进行比较,其中正零和负零是不同的值。