【问题标题】:how to calculate the one's complement for positive and negative number?如何计算正数和负数的补码?
【发布时间】:2012-06-02 09:52:37
【问题描述】:

如果我用一个补码来表示数字,我应该得到什么结果?
比如数字01110(一个正数),它的补码应该是01110还是10001?
如果数字为 10001(负数),则补码值为 01110?

【问题讨论】:

  • 补语有很多可能的定义。你在找this one 吗?
  • 您问题中的代码在哪里?这是一个编程问题吗?
  • 是的。我读了这个 wiki:en.wikipedia.org/wiki/Ones%27_complement 但不知道正数的补码值。有人说应该是正数,不用改。
  • 这不是编程的问题,只是想了解一个补码算法

标签: complement ones-complement


【解决方案1】:

在您的情况下,它将是 10001。1 的补码意味着反转数字中的所有位。

这也意味着它将正数变为负数,反之亦然。另请注意,这会产生一些奇怪的行为,例如零的补码不是零,而是负零:00000 变为 11111。这使得使用 1 的补码的算术有点棘手,这也是当今计算机使用 2 的补码的原因之一否定。

【讨论】:

    【解决方案2】:

    对于正数,一个补码、二进制补码和有符号幅度都是相同的。对于负数,将二进制作为绝对值(正数)并将其反转以获得一个补码。将 1 的补码加 1 得到 2 的补码……并在原码的最左边多加 1 位得到符号幅度……

    【讨论】:

      【解决方案3】:

      这是完全错误的一个补码,二进制补码和有符号幅度对于正数都是相同的。对于负数,取负数的绝对值(正数)的二进制并将其取反得到与二进制补码和有符号幅度不同的反码。

      【讨论】:

        猜你喜欢
        • 2015-11-02
        • 1970-01-01
        • 2013-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 2019-08-17
        • 1970-01-01
        相关资源
        最近更新 更多