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

如何在Python中使用位运算符?,python,python-2.7,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=0010和3=0011。结果是, + 0010 0011 ---- 0010=2 但是Out[1]给出的结果并不准确,Out[2]给出的结果是准确的 两种情况的区别是什么?您正在寻找按位运算符

我是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]给出的结果并不准确,Out[2]给出的结果是准确的


两种情况的区别是什么?

您正在寻找按位运算符

>>> 2 & 3
2
>>> 2 | 3
3
只需执行2和3,就可以计算2,这是真的,然后3也是真的,Python将返回第二个数字。所以你得到3分


对于2或3,由于2为真,它会短路并返回2。

您正在查找按位and、&

and和or是Python中的布尔运算符,而&和|是位运算符

示例-

>>> 2 and 3
3
>>> 2 & 3
2
在python中使用&,并且是布尔型和:

>>> 2 & 3
2
>>> 3 & 2
2
您正在使用,该短路返回运算符结果固定的第一个操作数

您正在寻找的是|和&:

如果第一个操作数为true-y而不是空或数字0,则or运算符返回第一个操作数,否则返回第二个操作数;如果为false-y,则and运算符返回第一个操作数,否则返回第二个运算符。这就是为什么3和2返回2,3或2返回3。2和3都是非零的,因此在布尔上下文中为真

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

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

通常人们会以另一种方式将其混淆在python中,有几个值被认为是false:false、None、0和任何对象obj,其中lenobj==0,例如,[]和{}。所有其他对象都被认为是真的。这里有几个使用逻辑运算符的示例:[]或5==5、[]或==、True和None==None、[1,2,3]或False==1,2,3]等@MiniQuark:除了None之外,它们都可以简化为“空”或“数值0”。你是对的,但我想解释清楚,因为intFalse==0和intNone==0并不简单。这里有精确的规则:@MiniQuark:intNone只是不带参数的int构造函数;True==1为True,False==0为True,但None==0为False。这是因为bool类型是int.@MiniQuark:的一个子类。我在这里重点讨论按位运算符,并简要解释OP为什么会混淆。没有必要去探究是什么让事情变得虚假或真实的细节,我链接到的文档包含了那些想知道更多的人的细节。
>>> 3 and 0
0
>>> 3 or 0
3
>>> 0 and 3
0
>>> 0 or 3
3