【问题标题】:How to convert decimal to 1's complement hexadecimal in python如何在python中将十进制转换为1的补码十六进制
【发布时间】:2016-01-01 12:49:33
【问题描述】:

我需要弄清楚,在 python 中,如何使用 1 的补码将有符号十进制转换为十六进制。我需要得到的示例结果如下:

0 变成 0000,

65.5 变成 0041

200 变成 00c8

-200 变成 ff37

我可以使用 hex() 轻松获得正数,但是如何进行转换以获得负数的正确值?

【问题讨论】:

    标签: python binary hex decimal


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2014-04-16
      • 2010-12-15
      • 2011-08-13
      • 2018-07-24
      • 1970-01-01
      • 2019-01-01
      • 2012-03-01
      • 1970-01-01
      • 2015-09-13
      相关资源
      最近更新 更多