2015-10-04 136 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 
相關問題