【问题标题】:Converting decimal to 2's complement将十进制转换为 2 的补码
【发布时间】:2015-02-05 01:26:46
【问题描述】:

我正在将十进制数转换为 2 的补码二进制数。 我理解这个概念;

  1. 将数字转换为十六进制(以 16 为基数)
  2. 将结果转换为二进制(填充为 8 位)
  3. 反转所有位并加 1

所以我一直在尝试转换 92(base 10)

92 -> Hex = 5c
5C == 5 12 -> Binary = 01011100
Inverting = 10100011
           +       1
           =10100100

但是我用来检查答案的在线转换器说:01011100 我做错什么了?我知道最重要的位应该是 0,因为这个数字是正数。但除此之外,我很困惑。

更新

这是因为正数不需要切换符号幅度吗? 因此,在做 2 的补码之前和之后的数字保持不变?

意思是,我得到的答案是其实否定的解释; -92?

【问题讨论】:

  • 请记住,如果 MSB 中有 1,那么您说的是 2 的恭维中的负数。
  • 对!我知道,但我想我可能在不需要的时候不小心颠倒了数字。
  • 我在这里唯一的猜测是这个赋值是从负数 92 开始的,即A4,或者10100100,然后得到它的补码。

标签: binary binary-data data-conversion


【解决方案1】:

仅当您尝试表示负数时将其反转并加 1,正数用普通二进制表示。 (您只会得到更小的正数范围)。

【讨论】:

  • 好吧,那么我得到的数字确实是92的负数?
  • 是的。您按照正确的程序在 2 的恭维中表示 -92。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-28
  • 1970-01-01
  • 1970-01-01
  • 2014-04-16
  • 2014-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多