为什么在Python中3<<1等于6?
可能重复的问题:
绝对初学者的位移操作指南?
有人能给我解释一下这个操作符 << 或 >> 吗?
4 个回答
15
数字3在二进制中是11
,如果把它向左移动一位,就变成了110
,也就是十进制的6。
可以把a << b
理解为a * (2 ** b)
,也就是把a乘以2的b次方。
>>
是用来向右移动的。可以把a >> b
理解为a // (2 ** b)
,也就是把a除以2的b次方。
34
<<
和 >>
是位移运算符。简单来说,x << 1
会把 x
中的所有位向左移动一位,这样就相当于把这个数乘以2。更一般地说,x << n
会把位向左移动 n 位。要理解这个操作,最简单的方法是看看 二进制 表示法:
3 0000011 = 3
3 << 1 0000110 = 6
3 << 2 0001100 = 12
3 << 3 0011000 = 24
同样,>>
运算符则是把位向右移动:
58 0111010 = 58
58 >> 1 0011101 = 29
58 >> 2 0001110 = 14
58 >> 3 0000111 = 7
58 >> 4 0000011 = 3
58 >> 5 0000001 = 1
58 >> 6 0000000 = 0