0
我需要在python中找出如何使用1的补码来将带符号的十进制转换为十六进制的负值。这个例子的结果,我需要得到低于:如何在python中将十进制转换为补码十六进制
0变为0000,
65.5变为0041
200成为00C8
-200变得FF37
我可以使用十六进制()很容易得到正面的结果,但是如何进行转换才能获得负数的正确值?
我需要在python中找出如何使用1的补码来将带符号的十进制转换为十六进制的负值。这个例子的结果,我需要得到低于:如何在python中将十进制转换为补码十六进制
0变为0000,
65.5变为0041
200成为00C8
-200变得FF37
我可以使用十六进制()很容易得到正面的结果,但是如何进行转换才能获得负数的正确值?
你的例子是错误的。用6.55
你实际上意味着65
这导致0x41
。 20
变成0x14
,而不是0xc8
,因为那将是200
。 0x20
的一个补码是0xeb
而不是0x37
或0xff37
。
要计算补码,您可以使用XOR-operator。根据预期数据的位深度使用0xFF
或0xFFFF
。
16位:
hex(0x14^0xFFFF) -> 0xffeb
0b0000000000010100^
0b1111111111111111
------------------
0b1111111111101011 -> 0xffeb
8位:
hex(0x14^0xFF) -> 0xeb