我想用二进制补码表示来表示一个负整数。使用标准的Python位表示实用程序没有多大帮助:
>>> bin(-5)
'-0b101'
>>> format(-5, 'b')
'-101'
两个补码中的 -5
表示为1011
。我该怎么做?
答案 0 :(得分:14)
Python的整数已经使用了两个补码,但由于它们具有任意精度,负数的二进制表示在开始时将具有无限的1s串,就像正数具有无限的0串一样。由于显然无法显示,因此用减号表示。
如果你想要特定宽度的二进制表示,你可以使用modulo。
>>> bin(-5)
'-0b101'
>>> bin(-5 % (1<<32))
'0b11111111111111111111111111111011'