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

dha*_*ana 0 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
Run Code Online (Sandbox Code Playgroud)

在上面,拿2=00103=0011.结果是,

+ 0010
  0011
  ----
  0010=2
Run Code Online (Sandbox Code Playgroud)

Out[1]给了3(不完全)并out[2]给了2(确切).

两种情况有什么区别?

Mar*_*ers 10

您正在使用布尔逻辑orand短路(返回操作符结果固定的第一个操作数).

您正在寻找二进制位运算符,|并且&:

>>> 0b10 & 0b1
0
>>> 0b10 | 0b1
3
Run Code Online (Sandbox Code Playgroud)

如果or操作数为true-y(非空或数字0),则运算and符返回第一个操作数,否则操作符返回第一个操作数,如果是false-y则返回第一个操作数,否则返回第二个操作数.这就是为什么你看到3 and 2返回2,并3 or 2返回3.无论23不为零,在布尔环境如此真实.

使用0虚假值你会看到:

>>> 3 and 0
0
>>> 3 or 0
3
>>> 0 and 3
0
>>> 0 or 3
3
Run Code Online (Sandbox Code Playgroud)


小智 6

您正在寻找按位运算符,

>>> 2 & 3
2
>>> 2 | 3
3
Run Code Online (Sandbox Code Playgroud)

通过刚刚进行2 and 3评估2,True然后3(也True),Python返回第二个数字.所以你得到了3.

随着2 or 3,它出现短路,只是返回22IS True.