首页 > 解决方案 > Python 3 中按位与和逻辑与以及相等运算符的行为

问题描述

所以我理解按位与并不总是可以安全使用,特别是如果操作数是数字的话。但是我试图理解这个陈述背后的那个微小的微妙原因返回 False 是什么。

1110010110001000 == 1110010110001000 & 1 == 1 & 1000001000001101 == 1000001000001101 & 1 == 1--> 错误

但是,当我使用逻辑 AND 运算符时,它返回 True,这相当冗长和清晰,但试图理解为什么第一条语句返回 False。

1110010110001000 == 1110010110001000 and 1 == 1 and 1000001000001101 == 1000001000001101 and 1 == 1--> 真

PS:在我的搜索中找不到任何类似的 QA。

标签: pythonbitwise-andlogical-and

解决方案


根据运算符优先级,按位和&绑定比==哪个强,而后者又比逻辑绑定强and。因此,您的代码如下所示:

1110010110001000 == (1110010110001000 & 1) == (1 & 1000001000001101) == (1000001000001101 & 1) == 1
(1110010110001000 == 1110010110001000) and (1 == 1) and (1000001000001101 == 1000001000001101) and (1 == 1)

推荐阅读