如何将负十六进制转换为十进制

嗨,我想知道如何将十六进制负值(到补码编码)转换为十进制,很容易,不用将十六进制转换为二进制,然后将每个位乘以2的幂,并将所有值相加得到结果,这需要太多时间:
数字(32位)的示例:0xFFFFFE58

那怎么办呢?

最佳答案
没有使用计算机,你可以像这样计算:

0xFFFF FE58 = - 0x1A8 = -(1 * 16² + 10 * 16 + 8) = -(256 + 160 + 8) = -424

0xFFFF FE58是2的补码中的负数.要获得绝对值,必须反转所有位并在二进制中加1.你也可以从超出范围的第一个数字中减去这个数字(0x1 0000 0000)

 0x100000000
-0x0FFFFFE58
      =
 0x0000001A8

现在我们知道你的号码是-0x1A8.现在你必须将数字乘以它们的位置值. 8 * 16 ^ 0 A(10)* 16 ^ 1 1 * 16 ^ 2 = 424.因此您的数字的十进制值为-424.

转载注明原文:如何将负十六进制转换为十进制 - 代码日志