在Python中,变量不仅可以进行数值运算,也可以进行逻辑运算。
&
按位与,即将两个数字转化为二进制,然后每位相比较(从右往左,位数不够补0)。如果这一位都是1,那么得到结果的这一位也是1(二进制下)。最后将结果拼接起来,转换为十进制即得结果。
例:14&20
先把14和20转为二进制,为(0)1110
和10100
,然后逐位对比:
得到00100
(二进制),转化为十进制即4。
|
按位或,即对比二进制相同位,如果有1则结果的这一位为1。
仍以14和20为例,这时候得到的二进制结果为11110
,十进制下为30。
^
按位异或,如果对应二进制那位相同得0,不同为1,拼接起来得到二进制结果,最后再转为十进制。
仍以14和20为例,这时候得到的二进制结果为11010
,十进制下为26。
==
逻辑判断,只有左右两边完全相等时返回True
,其余情况返回False
。
!=
不等判断,和==刚好相反,当左右两端不相等时返回True
,相等时返回False
。
and
且(相当于C语言的&&),只有当左右两个条件都为真时才返回True
(或1),其余情况返回False
(或0)。
or
与|
类似,左右两边有一个为True则返回True(或1)。
not
取反。
一个实用的例子
还记得交换a,b值的例子吗?那时我们引进了第三个变量作为中间变量,进而交换a,b的值。
实际上我们不需要引进第三个变量,甚至可以只有一种逻辑运算符即可。
我们有以下方法可以交换a,b的变量:
加减数值运算
a = 3
b = 4
a = a + b
b = a - b
a = a - b
异或逻辑运算
a = 3
b = 4
a = a ^ b
b = a ^ b
a = a ^ b
元组
a = 3
b = 4
a,b = b,a
后记
读者可自行组合练习使用上述逻辑,体会它们的区别与联系。