[英]how to convert negative hexadecimal to decimal
嗨,我想知道如何将十六进制负值(到补码编码)转换为十进制,很容易,不用将十六进制转换为二进制,然后将每个位乘以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。
对正数进行计算,然后用二进制补码转换为负数。
请参阅此处有关从六进制到十进制的正转换的说明:
http://www.permadi.com/tutorial/numHexToDec/
基本上:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.