Python 3.x python逐位运算或
用python 1000或10001的结果是1000 11或1000或10001或11的结果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 完全不同。
如何才能用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 0b1101101000或10001=1000是什么意思。应该是11001这能回答你的问题吗?在再读了几遍这个问题之后,我投了一张赞成票,以补偿投了一张反对票。有代码示例和适当的问题。不过,这本可以写得更通俗易懂。