为什么000的2s补码等于111,而000的9s补码不是888?

2021-02-03 21:18

我很困惑,所以我希望这里不要混淆不同的术语。十进制0的两个补码表示简单地说是000,000的两个补码是111,我想对一个数字进行补码相当于在二进制中翻转位,000

解答动态

  • 你非常说实话,由于什么是简单的拙劣术语而困惑。由于同样的误解,你的陈述2和3都是错误的。
    对于每一个基数$b$,有两个“补码”的主流变体,基数补码和减量基数补码。
    计算机科学中最常见的两个基数是基数$2$和基数$10$。令人困惑的是,通常使用的定义是:
    1's补码:基$2的减数基数补码'two's补码:基$2的基数补码'nine's补码:基$10$的减数基数补码(不是$9$!)十的补码:基数$10$的基数补码。

    • 二的000补码是000。它是通过对所有位进行补码并将结果加1而形成的。000的1的补码确实是111,但它不用于计算。
      000的10的补码是000。它是通过对所有数字进行补码并将结果加1而形成的。九的补码000确实是999。
      我建议彻底阅读关于二的补码的文章。
      二的补码后面是什么?
      二的补码的目的是得到一个取反运算$N(x)$,这样$x-y=x+N(y)$。其思想是,如果所有整数的宽度都是$w$,那么所有的计算都是以$2^w$为模隐式完成的,因此$x-y=x+2^w-y$。现在$2^w-y=(2^w-1-y)+1美元。$2^w-1$的二进制扩展由$w$和$1$s组成,因此$2^w-1-y$与$y$的互补相同。这就是为什么我们通过对所有位进行补码并加$1$来计算二者的补码。
      Ten的补码的工作方式是相同的:$x-y=x+10^w-y$,而$10^w-y=(10^w-1-y)+1$。现在$10^w-1$由$w$和$9$组成,因此$10^w-1-y$对应于所有数字的补码。因此,十的补码是通过对所有数字进行补码并加上$1$.
      而形成的

      • End

      免责声明:

      本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。