(实例解析)关于python中&,|,^,and,or的运算规则详解

先上一段代码来看看 按位与 &

a=9    #9的二进制是1001
b=13   #13的二进制是1101
print(a&b)  #结果是9

根据1&1=1,1&0=0,0&0=0,0&1=0的运算规则,
类似于千位,百位,十位,个位的一 一比较
但其实没有十位个位一说
方便理解罢了,按位置来一 一比对运算

这里就是1001与1101,1&1为1,0&1为0,0&0为0,1&1为1
对应位置上进行运算,得出的结果是1001,再转换为十进制,所以是9

接着来看看 按位并 |

c=5     #5的二进制是101
d=6     #6的二进制是110
print(c|d)  #结果为7

根据1|1=1 ,1|0=1, 0|1=1, 0|0=0
这里就是101与110,1|1为1,0|1为1,1|0为1
得出的结果是111,转换为十进制就是7

然后是 按位异或 ^

e=5     #5的二进制是101
f=3     #3的二级制是11
print(e^f)  #结果为6

按位异或的运算原则是对应位置的数字相加,但是不能进位

这里按位置相加,将3的二进制看为011,
1+0=1,0+1=1,1+1=0
这里1+1本来是等于2,二进制就是等于10,但是由于不能进位,所以仅保留0
对位相加的结果是110,转换为十进制就是6

再来看看and

g=4
h=7
print(g and h)  
#结果为7,左右都真,返回h,即返回and右侧的值
print(g and 0)  
#结果为0,左真右假,返回假的值,即返回0
print(2>3 and 4>2)  
#结果为False,左假右真,返回假的值,即2>3的值false

and运算,and左右表达式都为真则返回右侧表达式的值,有一个为假则返回假的表达式的值

最后是or
or运算有一个“短路”机制,即or的左侧为真,就直接返回左侧的值作为or这个整体表达式的值
至于or右侧的值就不会再去看。如果左侧为假,则会继续取右侧表达式的值

print(3 or 0)  #结果为3
print(0 or 0)  #结果为0
print(0 or 3)  #结果为3
print(3 or 5)  #结果为3
第四行的结果为3,是因为左侧已经为真,所以直接返回3,
发生“短路”,不会再去取右侧的值5

这里是全部代码的运算结果在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一纸春秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值