Python位运算符¶
Python位运算符按照数据在内存的二进制位(Bit)进行操作.
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.
| 第一个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.
| 第一个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.
| 第一个Bit位 | 第二个Bit位 | 结果 |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
按位异或运算可以用来将某些二进制位反转.
例如, 要把n的高16位反转, 保留低16位, 可以进行n ^ 0xFFFF0000运算.
注解
和0做异或操作, 表示保留; 和1做异或操作, 表示反转.
~按位取反运算符¶
按位取反运算符~为单目运算符(只有一个操作数), 右结合性, 作用是对参与运算的二进制位取反.
>>右移运算符¶
Python右移运算符>>用来把操作数的各个二进制全部右移若干位, 低位舍弃, 高位补0或1.
如果数据的最高位是0, 那么就补0; 如果最高位是1, 那么就补1.
如果被丢弃的低位不包含1, 那么右移n位相当于除以2的n次方.