用二进制补码表示负整数

用二进制补码表示负整数

问题描述:

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

I would like to represent an negative integer in bits, using two's complement representation. Using standard Python bit representation utilities doesn't help much:

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

补码中的

-5表示为1011.我该怎么办?

-5 in two's complement is represented as 1011. How do I do this?

Python的整数已经使用二进制补码,但是由于它们具有任意精度,因此负数的二进制表示形式在开始时将具有1的无限字符串,就像正数具有无限的0字符串.由于显然无法显示,因此用负号表示.

Python's integers already use two's complement, but since they have arbitrary precision, the binary representation of negative numbers would have an infinite string of 1s at the start, much like positive numbers have an infinite string of 0s. Since this obviously can't be shown, it is represented with a minus sign instead.

如果要使用特定宽度的二进制表示形式,则可以使用模数.

If you want the binary representation for a specific width, you can just use modulo.

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