如何在Python的Two's Complement中表达二进制文字?

时间:2012-05-13 03:53:18

标签: python syntax binary literals twos-complement

在python中,0b01001011将是75,这也适用于Two's Complement。但是0b10101001将是169,其中与Two's Complement一样,它将是-87。我如何表达Two's Complement二进制文字?

2 个答案:

答案 0 :(得分:3)

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

>>> -0b1010111
-87

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

答案 1 :(得分:0)

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

示例:

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

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