python 按位运算或

python bitwise operation OR

在python

1000 or 10001的结果是1000

11 or 1000 or 10001 或 11

的结果

如何获得 1000 or 100011000111 or 1000 or 1000111001

Python 按预期工作。

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

但是说

>>> 1000 or 10001
1000

完全不同。它查看两个整数,因为第一个等于 True(不是 0)所以它是 returnted。如果它不是 true,则 return 整数值会在 or 运算符之后。该功能非常方便;在 python 你可以这样说

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

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

在 python 中,您可以对 int 进行逻辑运算(或、与、非等)。

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

int('11', 2)

然后二进制数11将被转换为base 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