python移位运算符

1,二进制方式

>>> bin( 1 )
'0b1'
>>> bin( 10 )
'0b1010'
>>> a = 0b10
>>> a
2
>>>

2,移位运算符( >> << ): 箭头向左就是 向左移位 反正 箭头向右 就是向右位移,移位针对的是二进制

如,十进制的1 ---> 对应的二进制是 0000 0001

1 << 1 : 向左移动1位

0000 0001 --->0000 0010( 2 )

1 << 2 : 向左移动2位

0000 0001 --->0000 0100( 4 )

2 << 2 : 2向左移动2位

0000 0010 --->0000 1000( 8 )

>>> 1 << 1
2
>>> 1 << 2
4
>>> 2 << 2
8
>>>

向右移动是一样的道理,先把数转成二进制,再向右移动对应的位数

>>> 1 >> 1>>> 2 >> 1
1
>>> 3 >> 1
1
>>> 6 >> 1
3
>>>

6( 0000 0110 ) ---->经过 (6 >> 1) 0000 0011( 3 )

1.与运算:A与B值均为1时,A、B与的运算结果才为1,否则为0 (运算符:&)

2.或运算:A或B值为1时,A、B或的运算结果才为1,否则为0 (运算符:|)

3.异或运算:A与B不同为1时,A、B的运算结果才为1,否则为0 (运算符:^)

4.按位翻转(按位取反):将内存中表示数字的2进制数取反0取1,1取0(运算符:~)

>>> 1 & 1
1
>>> 1 & 0
0
>>> 4 & 1>>>
>>> 1 | 1
1
>>> 1 |1
>>> 4 | 1
5
>>>
>>> 1 ^ 1>>> 7 ^ 8
15
>>>
>>> ~5
-6
>>> ~20
-21
>>>