代码之家  ›  专栏  ›  技术社区  ›  sofs1 Romain Manni-Bucau

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

  •  0
  • sofs1 Romain Manni-Bucau  · 技术社区  · 6 年前

    Here 他们提到了 如果字的位数是偶数,则可以表示的最大负数的大小是可以表示的最大正数的两倍,如果字的位数是奇数,则相反。

    我再读了几遍,还是不明白。 你能举例说明一下吗?反之亦然。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Ali Elgazar    6 年前

    正如你所发布的链接中所说,“最右边的位代表(_ 2)^1=_ 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

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

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