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
posted @   Ravenna  阅读(3213)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示