python中 ^ 运算符:
^运算符为异或运算,例如:
a = 10
b = 100
a = a^b # a = 110
b = b^a # b = 10
a = a^b # a = 100
以上可以实现a,b值不通过中间变量互换,运算过程为:
a的二进制 1010 b的二进制 1100100
a : 0 0 0 1 0 1 0
b : 1 1 0 0 1 0 0
a^b: 1 1 0 1 1 1 0 ----> 110 (异或:相等为0,不等为1)
b : 1 1 0 0 1 0 0
b^a: 0 0 0 1 0 1 0 ---->10
a : 1 1 0 1 1 1 0
a^b: 1 1 0 0 1 0 0 ---->100
位运算符>>和<<
位运算符是对二进制数进行移位运算,>>右移,
例:
a = 10
a >> 1 # a = 5
原理:a的二进制: 1010 向右移一位-> 0101 转为十进制:5
左移 <<
例:
10 << 1 # 20
原理:直接在末尾补0 1010 左移一位 10100 结果 20
注:有一种简单的计算方式,
对于右移运算,结果为 num// 2**count,即当前数值除以2的n次方取整。
对于右移运算,结果为 num * 2**count,即当前数值乘以2的n次方。