是否有算法手动将二进制的十六进制转换为十进制?

时间:2014-02-09 19:51:21

标签: binary hex

假设我有十六进制A41B的二进制补码形式,我想将其转换为十进制。通常,我会将其转换为二进制,翻转所有位,添加一个,然后将其转换为十进制并放置正确的符号(正面或负面)。有没有更快的方法来手动完成这个?

3 个答案:

答案 0 :(得分:3)

你可以:

  • 将其转换为十进制
  • 从结果中减去2 N ,其中N是您的字大小(例如,对于16位字,减去65536)

在您的示例中,

0xA41B = 42011
42011 - 65536 = -23525

在进行减法之前,你会检查符号位是否为1。否则你只需要一个正数。

答案 1 :(得分:1)

来自dave's corner

=MOD(HEX2DEC(A7)+2^15,2^16)-2^15

表示16位数字。

答案 2 :(得分:0)

如果由于某种原因不想或不能执行其他答案建议的减法,您可以像这样处理负数:

  1. 翻转位
  2. 添加一个
  3. 转换为十进制,就像数字为正
  4. 一样
  5. 添加否定号
  6. 例如:-5是8位2的补码中的11111011。翻转位并添加一个是00000101,十进制为5。添加负号,你就有-5。