news 2026/4/3 8:01:47

Python位运算及操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python位运算及操作

一、位运算基础概念

位运算直接对二进制位(bit)进行操作,运算速度远超加减乘除等算术运算。Python中的整数以二进制补码形式存储,所有位运算都基于补码完成。

二、按位运算符详解

1. 按位与 (&)

原理:两个对应位都为1时结果为1,否则为0。
语法a & b
示例

6的二进制是01103的二进制是0011print(6&3)# 输出 2,二进制结果为0010

典型应用:

  • 快速判断奇偶:x & 1若结果为1则是奇数,为0则是偶数
  • 提取二进制特定位:num & 0b1000提取第4位的值

2.按位或 (|)

原理:只要有一个对应位为1,结果就为1。
语法a | b
示例

# 6的二进制是0110,3的二进制是0011print(6|3)# 输出7,二进制结果为0111

典型应用

  • 批量设置二进制位:flags | 0b100开启第三位标志位
  • 权限合并:将多个权限掩码合并为单一权限值

3. 按位异或 (^)

原理:对应位相异时结果为1,相同时结果为0。
语法a ^ b
示例

# 6的二进制是0110,3的二进制是0011print(6^3)# 输出5,二进制结果为0101

典型应用

  • 变量交换(无需临时变量):a, b = a^b, b^a
  • 快速定位不同:对比两个二进制数据的差异位
  • 简单加密:使用同一个密钥对数据进行加解密

4.按位取反 (~)

原理:对每个位取反,0变1,1变0。由于Python使用无限精度补码,结果表现为~x = -x-1
语法~a
示例

print(~3)# 输出-4# 3--011# 4--100

典型应用

  • 生成掩码:~0可以生成全1的二进制序列
  • 快速获取负数表示:~x +1等价于 -x

5.左移 (<<)

原理:将二进制位向左移动n位,右边补0,相当于乘以2的n次方。
语法:a << n
示例

print(5<<2)# 5的二进制是101,左移2位后变为10100,输出20

典型应用:

  • 快速乘法:x << 1 等价于x*2
  • 快速计算2的幂次:1 << n

6.右移 (>>)

原理:将二进制位向右移动n位,正数左边补0,负数左边补1。相当于除以2的n次方并向下取整。
语法a >> n
示例

print(20>>2)# 20的二进制是10100,右移2位后变为101,输出5print(-20>>2)# 输出-5

典型应用:

  • 快速除法:x >> 1 等价于x//2
  • 取绝对值优化:对于负数 (x ^ (x >> 31)) - (x >>31)

三、高级应用技巧

1、位掩码操作

# 定义权限掩码PERM_READ=0b0001PERM_WRITE=0b0010PERM_EXECUTE=0b0100# 分配权限user_perm=PERM_READ|PERM_WRITE# 检查权限has_write=(user_perm&PERM_WRITE)!=0

2、快速计算奇偶与倍数

# 判断是否是2的幂defis_power_of_two(x):returnx&(x-1)==0#这个函数的核心逻辑建立在2的幂的二进制特性之上:# 2的幂的二进制特征:所有2的幂在二进制表示中,都只有最高位是1,其余位都是0。# 2^0 = 1 → 二进制:0001# 2^1 = 2 → 二进制:0010# 2^2 = 4 → 二进制:0100# 2^3 = 8 → 二进制:1000# x-1的魔法翻转:当你对2的幂减1时,会把唯一的1变成0,并将它右边所有的0全部变成1。# 8 (1000) -1 = 7 (0111)# 4 (0100) -1 = 3 (0011)# 位与运算消去1:将x和x-1进行位与运算时,两个数没有任何一位同时为1,所以结果必然是0。# 1000 & 0111 = 0000# 0100 & 0011 = 0000#这个实现有一个需要注意的点:当x=0时,0 & (-1) 会等于0,但0并不是2的幂。在实际应用中,通常需要添加额外的判断条件:defis_power_of_two(x):returnx>0and(x&(x-1))==0# 计算两数平均值(避免溢出)defaverage(a,b):return(a+b)>>1

3、IP地址转换

# 将IPv4地址转换为整数#这个函数的本质是把点分十进制表示的IPv4地址,转换为一个32位无符号整数,利用位运算实现了最高效的合并。defip_to_int(ip):# ip.split('.') 将字符串格式的IP地址按点分割,得到一个四元素字符串列表。比如输入 "192.168.1.1",会得到 ["192","168","1","1"]。# map(int, ...) 将这四个字符串转换为整数类型,再用list()转为整数列表,最终 parts = [192,168,1,1]。parts=list(map(int,ip.split('.')))# parts[0] <<24:将IP的第一段(最高8位)左移24位,占据整数的最高8位。比如192 <<24 得到二进制中前8位为11000000,后面24位全是0。# parts[1] <<16:第二段左移16位,占据第二高的8位。# parts[2] <<8:第三段左移8位,占据第三组8位。# parts[3]:第四段不移动,直接占据最后8位。# 四次左移操作后,四段整数在二进制中各自占据独立的8位区域,使用|(按位或)将它们合并成一个完整的32位整数。按位或的特性保证了不同段的二进制位不会互相干扰,完美拼接四段8位数据。return(parts[0]<<24)|(parts[1]<<16)|(parts[2]<<8)|parts[3]

位运算在Python标准库中的应用极其广泛,比如bisect模块的二分查找、array模块的内存优化、以及加密算法中的位级操作,深入掌握位运算能大幅提升你的代码执行效率与底层编程能力。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/2 0:48:09

BetterGI:5个实用功能让原神游戏体验全面升级

还在为原神中繁琐的重复操作而烦恼吗&#xff1f;BetterGI作为一款智能自动化辅助工具&#xff0c;通过先进的计算机视觉技术&#xff0c;为PC端玩家提供了高效便捷的游戏解决方案。这款工具的核心价值在于让玩家从重复劳动中解放出来&#xff0c;专注于享受游戏的核心乐趣。 【…

作者头像 李华
网站建设 2026/3/31 3:43:27

BetterGI原神自动化工具:轻松解放双手的终极游戏助手指南

BetterGI原神自动化工具&#xff1a;轻松解放双手的终极游戏助手指南 【免费下载链接】better-genshin-impact &#x1f368;BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动派遣 | 一键强化 - UI Automation Testing Tools …

作者头像 李华
网站建设 2026/3/31 6:33:11

闲鱼自动化神器:告别重复劳动,每天多出1小时自由时间

闲鱼自动化神器&#xff1a;告别重复劳动&#xff0c;每天多出1小时自由时间 【免费下载链接】xianyu_automatize [iewoai]主要用于实现闲鱼真机自动化&#xff08;包括自动签到、自动擦亮、统计宝贝数据&#xff09; 项目地址: https://gitcode.com/gh_mirrors/xia/xianyu_a…

作者头像 李华
网站建设 2026/3/11 22:06:02

DownKyi实战手册:手把手教你玩转B站视频下载

DownKyi实战手册&#xff1a;手把手教你玩转B站视频下载 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09;。 …

作者头像 李华
网站建设 2026/3/31 3:32:18

简单实现Iwara视频批量下载的完整教程

简单实现Iwara视频批量下载的完整教程 【免费下载链接】IwaraDownloadTool Iwara 下载工具 | Iwara Downloader 项目地址: https://gitcode.com/gh_mirrors/iw/IwaraDownloadTool 还在为Iwara平台上喜欢的视频无法批量下载而烦恼吗&#xff1f;这款功能强大的视频下载工…

作者头像 李华
网站建设 2026/4/2 15:06:00

哔哩下载姬终极指南:免费获取B站8K视频的完整教程

哔哩下载姬终极指南&#xff1a;免费获取B站8K视频的完整教程 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff0…

作者头像 李华