python bitwise operation OR



在python 中

1000 or 10001的结果是1000

11 or 1000 or 10001或11 的结果

如何为1000 or 10001获取10001,为11 or 1000 or 10001获取11001

在python中,您可以通过int.进行逻辑运算(或、和,而不是etc(

要将二进制数字符串转换为int,可以这样做,

int('11', 2)

然后,二进制数11将被转换为基数为2的int。因此,您将得到3

回到你的问题上来,

您需要预成型:1000 or 10001

要做到这一点,首先将这些二进制数转换为int,并对这些数字应用逻辑或运算符。会是这样的

bin(int('1000', 2) | int('10001', 2)) # '0b11001'

上述结果中的0b表示它是一个二进制字符串。

类似地,对于11 or 1000 or 10001

bin(int('11', 2) | int('1000', 2) | int('10001', 2)) # 0b11011

Python的工作与预期一样。

>>> bin(0b1000 | 0b10001)
'0b11001'
>>> bin(0b11 | 0b1000 | 0b10001)
'0b11011'

但是说

>>> 1000 or 10001
1000

完全不同。它查看两个整数,因为第一个整数等于True(而不是0(,所以它被返回。如果它不是真的,那么将在或运算符之后返回整数值。这个功能非常方便;在python中,你可以这样说

>>> myvalue =["Hello world"]
>>> myvalue and myvalue[0] or "Empty list"
'Hello world'
>>> myvalue = []
>>> myvalue and myvalue[0] or "Empty list"
'Empty list'

因为在这个操作中,空列表等于False。

相关内容

最新更新