python - 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。
解决方案
根据运算符优先级,按位和&
绑定比==
哪个强,而后者又比逻辑绑定强and
。因此,您的代码如下所示:
1110010110001000 == (1110010110001000 & 1) == (1 & 1000001000001101) == (1000001000001101 & 1) == 1
(1110010110001000 == 1110010110001000) and (1 == 1) and (1000001000001101 == 1000001000001101) and (1 == 1)
推荐阅读
- docker - 如何使用 docker(分别为 docker-in-docker)在 Gitlab CI 上启动 nginx?
- material-ui - material-ui: AppBar with position="fixed" - 在 iOS 上滚动覆盖带有正文背景的 AppBar
- apache-spark - SPARK Data Frame 中数据的一致视图
- java - Eclipse(或intellij)函数参数使用静态分析
- wcf - WCF 服务器和 WS-Security 到 Java 客户端 (SoapUI)
- c# - C#如何防止使用智能卡时出现多个Windows PIN提示?
- reactjs - React-Mobx 警告:组件正在更改不受控制的输入
- ruby-on-rails - 如果在 Rails 中有复合索引,我是否需要单列索引?
- android - Java中的自定义正则表达式
- node.js - 是否可以在我的操作中添加唤醒词?