繁体   English   中英

如何在Python中使用按位运算符?

[英]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=00103=0011 结果是

+ 0010
  0011
  ----
  0010=2

但是Out[1]给出了3(不精确),而out[2]给出了2(精确)。

两种情况有什么区别?

您正在使用布尔逻辑orand ,它们会短路(返回固定运算符结果的第一个操作数)。

您正在寻找的二进制位运算符代替, | &

>>> 0b10 & 0b1
0
>>> 0b10 | 0b1
3

or运算符返回第一个操作数,如果它为true-y(不是空或数字0),否则返回第二个操作数,如果and运算符返回第一个操作数,如果它为false-y,否则返回第二个操作数。 这就是为什么您看到3 and 2返回2 ,而3 or 2返回3 23都不为零,因此在布尔上下文中为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因为2True

您正在寻找按位的&

andor是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM