运算符 | 功能 | 描述 |
---|---|---|
& | 按位与运算 | a & b,将 a 和 b 的对应二进制位进行与运算并返回 |
| | 按位或运算 | a | b,将 a 和 b 的对应二进制位进行或运算并返回 |
~ | 按位取反运算 | ~a,将 a 的对应二进制位进行取反运算并返回 |
^ | 按位异或运算 | a ^ b,将 a 和 b 的对应二进制位进行异或运算并返回 |
<< | 左移运算 | a << b,将 a 的对应二进制位左移 b 位并返回 |
>> | 右移运算 | a >> b,将 a 的对应二进制位右移 b 位并返回 |
按位与的运算规律和“逻辑与”类似,运算规则可以简单记为:“同 1 为 1,其余为 0”。
a,b=9,5
print(a&b)
按位与的运算规律和“逻辑或”类似,运算规则可以简单记为:“同 0 为 0,其余为 1”。
按位取反操作是把一个数的补码的所有二进制位的 1 变成 0,0 变成 1(包括符号位),不知道补码的知识也没关系,可以把按位取反的作用简单地记为取相反数后减一。
按位异或(exclusive OR,可简写为 XOR)是一种规律特殊且重要的位运算,在 Python 中使用符号 ^
进行运算。异或运算不仅参与一些算法的关键步骤,也是很多题目中的重要考点。其运算规律可以简单记为:“相同为0,不同为1”。
print(6 ^ 10)
12
Tips:
1、异或运算也被称为“按位模 2 加”,因为它的规律可以看成将相应二进制位相加后模2,例如:1 ^ 1 = (1 + 1) % 2 = 0。
2、任何数字和0进行异或的答案都是它本身,例如:10 ^ 0 = 10。
3、任何数字和它本身进行异或的答案都是0,例如:10 ^ 10 = 0。
4、异或满足交换律:a ^ b = b ^ a。
5、异或具有“知一得二”的性质,也就是知道某个异或等式后就能得出其他两个等式。例如:已知 a ^ b = c,一定可知:a ^ c = b 以及 b ^ c = a。
左移运算的实质为将数字的补码中的非符号位最左端一位删除,并在非符号位的最右端补 0。右移运算的实质为将数字的补码的中的非符号位最右端一位删去,并把非符号位的最左端补 0。如果不理解补码的话,可以简单记为:左移运算相当于乘 2,右移运算相当于除 2 并向下取整。
Python 左移右移运算的语法含有两个操作数,第一个操作数为被操作的数字,第二个则为操作的次数。
print(2<<4) #2左移4次,2*2*2*2*2=32
print(4<<2) #4左移2次,4*2*2=16
print(7>>1) #7右移1次,7%2取整=3
print(2>>1) #2右移1此,2%2=1