python运算符: ^ <<

^表示二进制异或运算

如下表(相同为0,不同为1),显然异或运算作为一种逻辑运算,有对称性(a^b=b^a):

 从左至右进行比对,不足为则用0补缺:

对于 ^ 两边的数字都是正数则直接对比计算即可

例如:

7 ^ 10
二进制:0111 ^ 1010
输出为:1101=13

9 ^ 8
二进制:1001^1000
输出为:0001即为1

若一边或两边出现负数,则需要进行负数的转码

转码原理:负数原码与补码之间相互转换

例:

-1 ^ -32

-1    二进制为 -1

而-1在计算机中被这样转换

原码:1000 0001

反码:1111 1110

补码:1111 1111

-32  二进制为 -100000

而-1在计算机中被这样转换

原码:1010 0000

反码:1101 1111

补码:1110 0000

-1  ^  -32  =>  31
# 1111 1111 ^ 1110 0000 =>  00011111  =>31

<< 左移动运算符:

运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0;

-1 << 5  => -100000
#-100000 = -32

另还有>>右移动运算符,原理一致

其他运算符

a = 0011 1100

b = 0000 1101

-----------------

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a  = 1100 0011

原文地址:https://www.cnblogs.com/sewen-H/p/13557154.html