【问题标题】:Converting Decimal to Two's-Complement将十进制转换为二进制补码
【发布时间】:2013-09-28 05:19:01
【问题描述】:

说明:如果可能,将这些十进制数转换为 5 位 2 的补码形式。如果不可能,请解释为什么会这样。

(16) 以 10 为底

根据在线转换器:

据我了解,

如果小数是正数

  • 第 1 步:将幅度转换为二进制。
  • 第 2 步:将 0 填充到所需的位大小。

如果小数是负数

  • 第 1 步:将幅度转换为二进制。
  • 第 2 步:将 0 填充到所需的位大小。
  • 第 3 步:反转位以实现 1 的补码。
  • 第 4 步:加 1 以实现 2 的补码。

由于 16 是正数,我只是通过重复除法将其转换为二进制,得到 (10000) 基数 2。

我不再填充 0,因为它已经是 5 位(包含 5 个数字)。

有人可以向我解释为什么在线转换器返回错误(我也坚信这是正确答案)?

【问题讨论】:

    标签: binary decimal twos-complement ones-complement


    【解决方案1】:

    使用 5 位,您最多可以表示 2^5 个不同的数字,因为您需要负数和正数,范围是 -16 到 +15。

    所以你会得到错误,因为 16 超出了 5 位的范围。更改为 6 位,它应该可以工作

    【讨论】:

      【解决方案2】:

      您需要 6 位来表示 +16,因为值 10000 表示 -16。

      可视化的最佳方式是 -
      00000-0
      00001-1
      00010-2
      ....
      01111-15
      10000-(-)16
      10001-(-)15
      ....
      尝试取 2 的补码 10000,你应该得到二进制值 16

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-15
        • 2014-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-16
        • 1970-01-01
        • 2011-09-03
        相关资源
        最近更新 更多