关于运算符:为什么python中的3<<1 == 6?

Why is 3<<1 == 6 in python?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Absolute Beginner's Guide to Bit Shifting?

任何人都可以向我解释操作员<<或>>


<<>>运算符是位移位运算符。x << 1x中的所有位移到下一个最有效位,有效地乘以2。一般来说,x << n将位向上移动n个位置。要了解此操作的工作方式,最容易查看二进制表示:

1
2
3
4
3         0000011 =  3
3 << 1    0000110 =  6
3 << 2    0001100 = 12
3 << 3    0011000 = 24

类似地,>>运算符将位向下移动:

1
2
3
4
5
6
7
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

3,在二进制中,是11,左移一位是110或6(十进制)。

a << b看成a * (2 ** b)

>>用于右换档。把a >> b看作a // (2 ** b)


它有点移位,使用移位操作。

假设你有一个数字,看看最低的位,你有3个:

0 0 1 1

如果你换了它,你会得到6,或者:

0 1 1 1


是值班员。

http://docs.python.org/reference/expressions.html移位操作