【发布时间】:2023-04-09 23:35:02
【问题描述】:
假设我有十六进制 A41B 的二进制补码形式,我想将其转换为十进制。通常,我会将其转换为二进制,翻转所有位,加一,然后将其转换为十进制并输入正确的符号(正或负)。有没有更快的手动操作方法?
【问题讨论】:
-
这与将“普通”十六进制转换为十进制相同,只是您必须考虑到如果最高有效位 >= 8,则需要从中减去 2^16结果。
假设我有十六进制 A41B 的二进制补码形式,我想将其转换为十进制。通常,我会将其转换为二进制,翻转所有位,加一,然后将其转换为十进制并输入正确的符号(正或负)。有没有更快的手动操作方法?
【问题讨论】:
你可以:
在你的例子中,
0xA41B = 42011
42011 - 65536 = -23525
在进行减法之前,您需要检查符号位是否为 1。否则,您只会得到一个正数。
【讨论】:
【讨论】:
如果您出于某种原因不想或不能执行其他答案建议的减法,您可以这样处理负数:
例如:-5 是 8 位 2 的补码中的 11111011。翻转位并加一是00000101,即十进制的 5。添加负号,你有 -5。
【讨论】: