为什么以-2为底的最大负数的大小是最大正数的两倍?

时间:2018-10-03 05:35:41

标签: bit-manipulation bit twos-complement ones-complement

Here他们提到 “如果单词的位数为偶数,则可以表示的最大负数的大小是可以表示的最大正数的两倍,如果单词的位数为奇数,则反之亦然。”

重新阅读几次后,我仍然听不懂。 您能举个例子解释一下吗?反之亦然。

1 个答案:

答案 0 :(得分:2)

正如您在发布的链接中所说,“最右边的位代表(−2)^ 0 = +1,下一位代表(−2)^ 1 = −2,下一位代表(−2)^ 2 = +4,依此类推,带有交替符号。“

如果位以正负号交替出现,并且第一位为正数,则每个偶数位将为负数。如果将此偶数最左位设置为0,则该数字为正,但是绝对值将为前一个数字的一​​半。

例如:

  

0101 = 5,因为它是(-2)^ 0 +(-2)^ 2 = + 1 + 4

     

1010 = -10,因为它是(-2)^ 1 +(-2)^ 3 = -2-8

但是,如果我们限制为3位,我们将拥有

  

010 = -2,因为它是(-2)^ 1 = -2

     

101 = 5,因为它是(-2)^ 0 +(-2)^ 2 = 1 + 4 = 5

本质上,在base-2中,您可以达到的最大负数是将每个偶数位设置为1,将每个奇数位都设置为0的值。最高正数是一个相反的值。

如果允许的总位数为偶数,则将最左边的偶数位设置为1将产生一个负数,该负数至少是最大正数的两倍(因为任何正数都会将最左边的位设置为0)。而对于奇数位,情况恰恰相反。