当前位置:首页>python>第10课 Python 的运算符——位运算符

第10课 Python 的运算符——位运算符

  • 2026-10-11 06:12:40
第10课 Python 的运算符——位运算符

温馨提示:看完本篇教程有任何疑问、看不懂的地方,可以在评论区留下你的问题,欢迎大家一起交流学习!

一、课程概述

前面我们已经学完算术、赋值、比较、逻辑运算符,本节课学习位运算符。

位运算符是直接对二进制比特位进行操作的运算符,只能够作用于整数(int)。计算机底层所有数字都是由 0、1 的二进制储存,位运算可以直接操控每一位二进制数值,运行速度很快,常用于算法、权限设置、二进制加密、硬件编程等场景。

二、基础概念讲解

1. 二进制:日常生活使用十进制(逢十进一);二进制只有 0 和 1,逢二进一

    示例:十进制数字 5,转为二进制 = 101

2. 比特位:二进制里面每一个 0 或者 1,就叫做1个比特位

3. Python当中整数默认是十进制,`bin()`函数可以把十进制整数转换成二进制字符串

位运算符总表

运算符

名称

作用说明

&

按位与

两位都为1,结果才是1,否则为0

|

按位或

任意一位为1,结果就是1

^

按位异或

两位相同为0,两位不同为1

~

按位取反

二进制所有0变1,1变0

<<

左移运算符

二进制整体向左移动,低位补0,等价于乘以2的n次方

>>

右移运算符

二进制整体向右移动,高位补符号位,等价于整除2的n次方

三、代码案例演示

案例1:bin()查看数字的二进制

# 查看十进制数字的二进制a = 6b = 3print(bin(a))print(bin(b))# 输出结果# 0b110# 0b011# 0b是二进制标识,后面为真实二进制数值
案例2:按位与 &

规则:对应比特位全1才为1

6 → 110

3 → 011

相与结果:010 也就是十进制 2

a = 6b = 3print(a & b)

运行输出:2

案例3:按位或 |

规则:只要有一个比特位是1,结果就是1

6(110) | 3(011) = 111 → 7

a = 6b = 3print(a | b)


运行输出:7

案例4:按位异或 ^

规则:比特位相同取0,不同取1

6(110) ^ 3(011) = 101 → 5

a = 6b = 3print(a ^ b)


运行输出:5

小知识点:一个数字异或自己结果永远等于0;数字异或0等于自身

案例5:按位取反 ~

公式:~x = -(x + 1),Python采用补码存储负数

print(~5)# 结果 -6print(~-3)# 结果 2

案例6:左移 <<

向左移动n位,右边空位补0,数值 = 原数 * (2 ** n)

a = 2print(a << 1)  # 二进制10左移一位→100,等于4print(a << 3)  # 2*8=16

案例7:右移 >>

向右移动n位,舍弃右侧比特,正数高位补0,等价于整除 2**n

a = 8print(a >> 1) # 8 / 2 = 4print(a >> 2) # 8 / 4 = 2

四、特殊知识点总结

1. 位运算只支持整数,浮点数、字符串无法进行位运算,代码会直接报错

2. 左移适合快速放大数字,右移适合快速做整数除以2的运算,运算速度远超普通乘除

3. 异或的常用小技巧:交换两个变量数值

x = 10y = 20x = x ^ yy = x ^ yx = x ^ yprint(x,y) # 20 10

4. 运算符优先级:按位取反 > 左移右移 > 按位与 > 按位异或 > 按位或

五、课后练习题(3道)

习题1(基础)

写出代码,计算 9 & 4、9 | 4、9 ^ 4 的运行结果,并且使用bin()查看对应二进制。

习题2(填空)

1. 5 << 2 的结果等于?

2. 16 >> 3 的结果等于?

习题3(拓展实操)

利用异或运算符,完成 a=7、b=13 两个变量的值互换,打印输出交换过后的a、b。

本节课程到这里就结束啦!有代码报错、知识点没弄懂、实操遇到困难,欢迎在评论区留言,一起沟通学习!

最新文章

随机文章