位运算符
与运算符(&)
两个位都为1才返回1,否则返回0
66&99
>>> 66
# 运算过程
66:1 0 0 0 0 1 0
99:1 1 0 0 0 1 1
--------------
66:1 0 0 0 0 1 0
或运算符(|)
两个位都为0才返回0,否则返回1
66|99
>>> 99
# 运算过程
66:1 0 0 0 0 1 0
99:1 1 0 0 0 1 1
--------------
99:1 1 0 0 0 1 1
异或运算符(^)
两个位相同时才返回0,否则返回1
66^99
>>> 33
# 运算过程
66:1 0 0 0 0 1 0
99:1 1 0 0 0 1 1
--------------
33:0 1 0 0 0 0 1
左移运算符(<<)
各二进位全部左移若干位,高位丢弃,低位补0
66<<1
>>> 132
# 运算过程
66:1 0 0 0 0 1 0
---------------
132:1 0 0 0 0 1 0 0
右移运算符(>>)
66>>1
>>> 132
# 运算过程
66:1 0 0 0 0 1 0
---------------
33:0 1 0 0 0 0 1
运算符应用
幂运算(<<和>>)
for i in range(1,11):
print(1<<i)
>>>2
4
8
16
32
64
128
256
512
1024
加解密(异或^)
我们需要传输一串数字a,要求传输过程加密
如果发送方制定一个秘钥b,并将数字a与b进行异或运算,那么将得到加密后的数字c,这时候接收方如果得到秘钥b并将c与b执行异或运算,就可以将加密后的数字c还原为a
# 原始数字
a=1024
# 秘钥
b=2222
# 加密后的原始数字c=3246
c=a^b
# 解密a1=1024
a1=c^b