以二进制补码表示格式化负整数

时间:2013-04-27 18:26:17

标签: python bit-manipulation

我想用二进制补码表示来表示一个负整数。使用标准的Python位表示实用程序没有多大帮助:

>>> bin(-5)
'-0b101'
>>> format(-5, 'b')
'-101'
两个补码中的

-5表示为1011。我该怎么做?

1 个答案:

答案 0 :(得分:14)

Python的整数已经使用了两个补码,但由于它们具有任意精度,负数的二进制表示在开始时将具有无限的1s串,就像正数具有无限的0串一样。由于显然无法显示,因此用减号表示。

如果你想要特定宽度的二进制表示,你可以使用modulo。

>>> bin(-5)
'-0b101'
>>> bin(-5 % (1<<32))
'0b11111111111111111111111111111011'