Python 位运算按照数据在内存中的二进制位(Bit)进行操作,Python 位运算符只能用来操作整数类型int,它按照整数在内存中的二进制形式进行计算。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 位
获取python中整数的二进制表示:
bin()函数

按位与&

  • 按位与运算符运算规则:0&0=0&1=1&0=0,1&1=1,即有0即0.

按位与在算法中的应用主要有:

  1. 判断整数的奇偶, 普遍的方法是取余操作,n%2==0 偶数,采用位运算可以提高程序的运行效率,n&1==1 奇数 n&1==0 偶数
  2. 幂运算
  3. 判断最低位的二进制为0 or 1.

按位或 |

  • 按位或运算符的运算规则:0|1=1|0=1|1=1,0|0=0,有1即1

相关代码题:

按位异^

  • 位异或运算符运算规则:0 ^ 0=1 ^ 1=0,0 ^ 1=1 ^ 0=1

异或运算:相同元素异或为0

相关代码题:
找出成对元素中单个出现的元素

按位取反 ~

  • 位求反运算符运算规则:~ 0=1,~ 1=0,对于整数x有**~x=-(x+1)**

相关代码:

左移位运算符 << ,<<=

  • 左移位运算符运算规则:原来的所有位左移,最低位补0,移多少位相当于乘以2的多少次方。

对于左移 << 、右移 >>:对原始值不做改变,只返回位移操作之后的值;
对于左移 <<= 、右移 >>=:会修改原始值,不返回任何值(或者说,返回 None )。

右移位运算符>>, >>=

  • 右移位运算符运算规则:原来的所有位右移,最低位丢弃,最高位使用符号位填充,相当于整除2 的移位次方

相关代码题:
Leetcode: 868 二进制间距