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