Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x python逐位运算或_Python 3.x_Bitwise Operators - Fatal编程技术网

Python 3.x python逐位运算或

Python 3.x python逐位运算或,python-3.x,bitwise-operators,Python 3.x,Bitwise Operators,用python 1000或10001的结果是1000 11或1000或10001或11的结果 如何才能用1000或10001获得10001,用11或1000或10001获得11001?Python的工作原理与预期一样 >>> bin(0b1000 | 0b10001) '0b11001' >>> bin(0b11 | 0b1000 | 0b10001) '0b11011' 但是说 >>> 1000 or 10001 1000 完全不同。

用python

1000或10001的结果是1000

11或1000或10001或11的结果


如何才能用1000或10001获得10001,用11或1000或10001获得11001?

Python的工作原理与预期一样

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

但是说

>>> 1000 or 10001
1000
完全不同。它看两个整数,因为第一个等于True而不是0,所以返回。如果不正确,则在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上执行逻辑运算或and,而不是etc

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

内景'11',2

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

回到你的问题上来

您需要预成型:1000或10001

为此,首先将这些二进制数转换为int,并对这些数字应用逻辑or运算符。看起来是这样的,

bin(int('1000', 2) | int('10001', 2)) # '0b11001'
上面结果中的0b表示它是一个二进制字符串

同样,对于11或1000或10001


binint'11',2 | int'1000',2 | int'10001',2 0b11011

01000或10001=1000是什么意思。应该是11001这能回答你的问题吗?在再读了几遍这个问题之后,我投了一张赞成票,以补偿投了一张反对票。有代码示例和适当的问题。不过,这本可以写得更通俗易懂。