1

在 python 中,0b01001011 将是 75,这也适用于 Two's Complement。但是 0b10101001 将是 169,而在二进制补码中,它将是 -87。如何表达二进制补码字面量?

4

2 回答 2

3

您用负号表示负二进制文字,如下所示:

>>> -0b1010111
-87

Python 的整数不是固定宽度的,因此没有“二进制补码”。

于 2012-05-13T03:56:51.293 回答
0

您可以使用二进制分数包。这个包TwosComplement用二进制整数和二进制分数实现。您可以将二进制分数字符串转换为其二进制补码,反之亦然

例子:

>>> from binary_fractions import TwosComplement, Binary
>>> int(Binary("01001011"))
75
>>> int(Binary("10101001"))
169
>>> TwosComplement("10101001").to_float()
-87.0

PS:无耻插件,我是这个包的作者。

于 2021-07-16T22:16:44.667 回答