6

2 の補数表現を使用して、負の整数をビット単位で表現したいと思います。標準の Python ビット表現ユーティリティを使用してもあまり役に立ちません。

>>> bin(-5)
'-0b101'
>>> format(-5, 'b')
'-101'

-52 の補数で として表され1011ます。どうすればいいですか?

4

1 に答える 1

16

Python の整数はすでに 2 の補数を使用していますが、それらは任意の精度を持っているため、負の数の 2 進数表現は、正の数が 0 の無限の文字列を持つのと同じように、最初に 1 の無限の文字列を持つことになります。これは明らかに表示できないため、代わりにマイナス記号で表されます。

特定の幅のバイナリ表現が必要な場合は、モジュロを使用できます。

>>> bin(-5)
'-0b101'
>>> bin(-5 % (1<<32))
'0b11111111111111111111111111111011'
于 2013-04-27T18:33:20.117 に答える