2015-10-04 98 views
0

我需要在python中找出如何使用1的补码来将带符号的十进制转换为十六进制的负值。这个例子的结果,我需要得到低于:如何在python中将十进制转换为补码十六进制

0变为0000,

65.5变为0041

200成为00C8

-200变得FF37

我可以使用十六进制()很容易得到正面的结果,但是如何进行转换才能获得负数的正确值?

回答

1

你的例子是错误的。用6.55你实际上意味着65这导致0x4120变成0x14,而不是0xc8,因为那将是2000x20的一个补码是0xeb而不是0x370xff37

要计算补码,您可以使用XOR-operator。根据预期数据的位深度使用0xFF0xFFFF

16位:

hex(0x14^0xFFFF) -> 0xffeb 

0b0000000000010100^
0b1111111111111111 
------------------ 
0b1111111111101011 -> 0xffeb 

8位:

hex(0x14^0xFF) -> 0xeb 
相关问题