[英]How to use bitwise operators in Python?
我是python的新手。 我已经使用以下代码测试了解释器,
In [1]: 2 and 3
Out[1]: 3
In [2]: 3 and 2
Out[2]: 2
In [3]: 3 or 2
Out[3]: 3
In [4]: 2 or 3
Out[4]: 2
在上面,取2=0010
和3=0011
。 结果是
+ 0010
0011
----
0010=2
但是Out[1]
给出了3(不精确),而out[2]
给出了2(精确)。
两种情况有什么区别?
您正在使用布尔逻辑or
和and
,它们会短路(返回固定运算符结果的第一个操作数)。
您正在寻找的二进制位运算符代替, |
和&
:
>>> 0b10 & 0b1
0
>>> 0b10 | 0b1
3
or
运算符返回第一个操作数,如果它为true-y(不是空或数字0),否则返回第二个操作数,如果and
运算符返回第一个操作数,如果它为false-y,否则返回第二个操作数。 这就是为什么您看到3 and 2
返回2
,而3 or 2
返回3
。 2
和3
都不为零,因此在布尔上下文中为true。
使用0
作为错误值,您将看到:
>>> 3 and 0
0
>>> 3 or 0
3
>>> 0 and 3
0
>>> 0 or 3
3
您正在寻找按位运算符,
>>> 2 & 3
2
>>> 2 | 3
3
仅通过执行2 and 3
您就可以评估2
,它是True
,然后是3
(也是True
),Python返回该第二个数字。 这样你得到3
。
使用2 or 3
,它将短路并仅返回2
因为2
为True
。
您正在寻找按位的&
。
and
和or
是Python中的布尔运算符,而&
和|
是按位运算符。
范例-
>>> 2 and 3
3
>>> 2 & 3
2
使用&
, and
是布尔AND
Python中:
>>> 2 & 3
2
>>> 3 & 2
2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.