Python位运算——与、或、异或、左移右移
1. 与 &
与运算规则:
1 & 1 = 1
0 & 1 = 0
0 & 0 = 0
以1和5的与运算为例:
1的二进制为 001
5的二进制为 101
仅最后一位都为1,所以结果为001
1 & 5 = 1
2. 或 |
或运算规则:
1 | 1 = 1
1 | 0 = 1
0 | 0 = 0
以4和6的或运算为例:
4的二进制为 100
6的二进制为 110
仅最后一位都为0,所以结果为110
4 | 6 = 6
3. 异或 ^
异或运算规则:
1 ^ 0 = 1
1 ^ 1 = 0
0 ^ 0 = 0
以9和3的异或运算为例:
9的二进制为 1001
3的二进制为 0011
不相同的位数为右数第2、4位,所以结果为1010
9 ^ 3 = 10
4. 左移 << 右移 >>
左移
x << y的含义为:将x的二进制数向左移动y位
以1为例,
1向左移动一位后得二进制数10,向左移动二位后得二进制数100
1 << 1 = 2
1 << 2 = 4
右移
x >> y的含义为:将x的二进制数向右移动y位
以5为例,
5的二进制数101向右移动一位后得二进制数10,向右移动二位后得二进制数1
5 >> 1 = 2
5 >> 2 = 1
凭借以上内容可解出Leetcode 461.汉明距离
def hammingDistance(x, y):
# 题目要求求出二进制位不同位置的数目
# 首先通过异或运算得出不同的位数
xor = x ^ y
# 记录距离的变量dis
dis = 0
# 因对变量xor进行右移操作,当xor不为0时进行以下操作
while xor:
# 通过&1的操作,可判断二进制数的有数第一位是否为1
if xor & 1:
# 如果为1,dis变量+1
dis += 1
# 对经过异或运算后的变量xor进行右移
xor = xor >> 1
return dis
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?