Python位运算符

Python位运算符按照数据在内存的二进制位(Bit)进行操作.

Python位运算符只能用来整数类型, 它按照整数在内存中的二进制形式进行计算.

Python位运算符
位运算符 说明 使用形式 举例
& 按位与 a & b 4 & 5
| 按位或 a | b 4 | 5
^ 按位异或 a ^ b 4 ^ 5
~ 按位取反 ~a ~4
<< 按位左移 a << b 4 << 2, 表示整数4按位左移2位
>> 按位右移 a >> b 4 >> 2, 表示整数4按位右移2位

&按位与运算

按位与运算符&的运算规则是: 只有参与&运算的两个位都是1时, 结果才位1, 都则位0.

Python & 运算的规则
第一个Bit位 第二个Bit位 结果
0 0 0
0 1 0
1 0 0
1 1 1

按位与运算通常用来对某些位清0, 或者保留某些位. 例如, 要把n的高16位清0, 保留低16位, 可以进行n & 0xFFFF运算.

注解

和0做与操作, 表示清0; 和1做与操作, 表示保留.

|按位或运算

按位或运算符|的运算规则是: 两个二进制位有一个为1时, 结果就为1, 两个都为0时结果才为0.

Python | 运算符的规则
第一个Bit位 第二个Bit位 结果
0 0 0
0 1 1
1 0 1
1 1 1

按位或运算可以用来将某些位置1, 或者保留某些位. 例如, 要把n的高16位置1, 保留低16位, 可以进行n | 0xFFFF0000运算.

注解

和0做或操作, 表示保留; 和1做或操作, 表示置1.

^按位异或运算

按位异或运算^的运算规则是: 参与运算的两个二进制位不同时, 结果为1, 相同时结果为0.

Python ^ 运算符的规则
第一个Bit位 第二个Bit位 结果
0 0 0
0 1 1
1 0 1
1 1 1

按位异或运算可以用来将某些二进制位反转. 例如, 要把n的高16位反转, 保留低16位, 可以进行n ^ 0xFFFF0000运算.

注解

和0做异或操作, 表示保留; 和1做异或操作, 表示反转.

~按位取反运算符

按位取反运算符~为单目运算符(只有一个操作数), 右结合性, 作用是对参与运算的二进制位取反.

<<左移运算符

Python左移运算符<<用来把操作数的各个二进制位全部左移若干位, 高位丢弃, 低位补0.

如果数据较小, 被丢弃的高位不包哈1, 那么左移n位相当于乘以2的n次方.

>>右移运算符

Python右移运算符>>用来把操作数的各个二进制全部右移若干位, 低位舍弃, 高位补0或1. 如果数据的最高位是0, 那么就补0; 如果最高位是1, 那么就补1.

如果被丢弃的低位不包含1, 那么右移n位相当于除以2的n次方.