假设我有十六进制A41B的二进制补码形式,我想将其转换为十进制。通常,我会将其转换为二进制,翻转所有位,添加一个,然后将其转换为十进制并放置正确的符号(正面或负面)。有没有更快的方法来手动完成这个?
答案 0 :(得分:3)
你可以:
在您的示例中,
0xA41B = 42011
42011 - 65536 = -23525
在进行减法之前,你会检查符号位是否为1。否则你只需要一个正数。
答案 1 :(得分:1)
答案 2 :(得分:0)
如果由于某种原因不想或不能执行其他答案建议的减法,您可以像这样处理负数:
例如:-5是8位2的补码中的11111011
。翻转位并添加一个是00000101
,十进制为5。添加负号,你就有-5。