【问题标题】:Is the two's complement always a signed number?二进制补码总是有符号数吗?
【发布时间】:2015-03-13 05:53:48
【问题描述】:

大家好,我刚开始在高中学习计算机科学课,在做作业和分配作业时,我对一件事感到很困惑。

我正在使用无符号数字,我想要 234 (1110 1010) 的二进制补码。首先我将它转换为一个补码(0001 0101),然后我将+1添加到一个补码,因此我应该得到(0001 0110)。 但是,当我使用在线计算器转换器时,它会给我 0000000011101010。

【问题讨论】:

  • 是不是打错了,还是计算器给了你二进制补码的原始数字?

标签: binary


【解决方案1】:

我认为你有两个误解之一:

2 的补码用于表示 有符号 数。也不需要对正 2 的补数进行任何转换。因此,如果您的数字长于 8 位,则在这些 8 位前面有填充,并且您的数字实际上是 0000 0000 .... 1110 1010,这是一个 正数 234。以及该正数的 2 的补码number 就是它本身(身份)。

8 位数字1110 1010 不是 2 的补码中的 234(十进制)。它是负数 22(您描述的过程中值 0001 0110 的负数)。可能是您的计算器为您的数据假设了错误的位数,而符号位(最高有效位)实际上是填充的 0。

十进制数 234 实际上对于 8 位数字来说太大了,因为您必须将一位用于符号。这意味着 8 位数字必须介于 -(2^7)(2^7) -1 之间,十进制为 -128127

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 2014-05-21
    相关资源
    最近更新 更多