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

时间:2013-06-17 09:35:22

标签: python python-2.7

我是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(确切)。

两种情况有什么区别?

4 个答案:

答案 0 :(得分:10)

您正在使用boolean logic or and and,这会短路(返回修复运算符结果的第一个操作数)。

您正在寻找binary bitwise operators|&

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

or运算符返回第一个操作数(如果它是true-y(非空或数字0)),否则返回第二个操作数,and运算符返回第一个操作数,如果它是false-y,否则是第二个运营商。这就是为什么您看到3 and 2返回23 or 2返回323都不为零,在布尔上下文中都是如此。

使用0作为假值,您会看到:

>>> 3 and 0
0
>>> 3 or 0
3
>>> 0 and 3
0
>>> 0 or 3
3

答案 1 :(得分:6)

您正在寻找按位运算符

>>> 2 & 3
2
>>> 2 | 3
3

只需执行2 and 3即可评估2True,然后是3(也是True),Python会返回第二个数字。所以你得到3

使用2 or 3时,它会短路并返回2,因为2True

答案 2 :(得分:2)

您正在寻找按位和&

andor是Python中的布尔运算符,而&|是按位运算符。

示例 -

>>> 2 and 3
3
>>> 2 & 3
2

答案 3 :(得分:1)

使用&and在python中是布尔AND

>>> 2 & 3
2
>>> 3 & 2
2
相关问题