逻辑与按位

时间:2011-12-07 15:56:58

标签: python logical-operators

逻辑运算符andor和按位模拟&|的使用情况有何不同?各种解决方案的效率有何不同?

4 个答案:

答案 0 :(得分:7)

逻辑运算符对逻辑值进行操作,而按位运算符对整数位进行操作。停止考虑性能,并将它们用于它们的意义。

if x and y: # logical operation
   ...
z = z & 0xFF # bitwise operation

答案 1 :(得分:5)

按位 =逐位检查

示例

Bitwise AND: 1011 & 0101 = 0001
Bitwise OR: 1011 | 0101 = 1111

逻辑 =逻辑检查,换句话说,您可以说True/False检查

示例

Logical AND: 1011 && 0101 = 1 (True) # both are non-zero so the result is True
Logical AND: 1011 && 0000 = 0 (False) # one number is zero so the result is False 
Logical OR: 1011 || 0000 = 1 (True) # one number is non-zero so the result is non-zero which is True
Logical OR: 0000 || 0000 = 0 (False) # both numbers are zero so the result is zero which is False

答案 2 :(得分:1)

逻辑运算符用于布尔值,因为true等于1且false等于0.如果使用除1和0之外的(二进制)数字,则任何非零的数字都将变为1。
例如:int x = 5;(二进制为101)int y = 0;(二进制为0)在这种情况下,打印x && y将打印0,因为101已更改为1 ,0保持为零:这与打印true && false相同,后者返回false(0)。

另一方面,按位运算符对两个操作数的每一位执行操作(因此术语“按位”)。
例如:int x = 5; int y = 8;打印x | y(按位或)会计算: 00 0101(5)
{ {1}}(8)
-----------
| 1000(11)
这意味着它会打印= 1011

答案 3 :(得分:-4)

逻辑运算符是:

&& || == !

它们允许您对逻辑值进行操作,例如:

(true || false) // evaluates to true
(!true) // evaluates to false

按位运算符是:

& | ^ ~

它们允许您对二进制位进行操作,如下所示:

~011 = 100
0101 & 0011 = 0001