<< / >> 运算符表示什么? (Python3)

What does the << / >> operator signify? (Python3)

表达式 (8 >> 1) 的计算结果为 4。此外,(8 << 1) 的计算结果为 16。我不知道双箭头运算符的作用,有人知道吗?

Shifting operators。这些运算符接受整数作为参数。它们将第一个参数向左 (<<) 或向右 (>>) 移动第二个参数给定的位数。

一个例子是0101 << 1 = 1010等等

图片来自维基百科

阅读here

这些运算符将数字中的位向右 >> 或向左 << 移动。在二进制表示法中,将一个数字向左移动得到 2 * 该数字。例如3:0011,6:0110,12:1100

双箭头操作为bit-shift。

基本上,它会以二进制形式查看您的数字,然后将您的整个数字“移动”到左一位或右一位。

例如:

8 >> 1 ->
             8 becomes:   00001000
shifting 1 place right:   00000100
which is 4.

Similarly,
8 << 1 ->
             8 becomes:   00001000
 shifting 1 place left:   00010000
which is 16.

到处都有一些极端情况,例如逻辑移位与算术移位。

通常,您可以使用它们进行非常快速的运算,将数字乘以 2 或除以 2,但那是 language-dependent,需要更多细节才能完美理解。特别是在 Python 中,不像 @paxdiablo 在评论中解释的那么多,如下所示:

bit shifting left in Python is not necessarily faster than multiplication, it has optimisations to avoid expanding its arbitrary precision integers in the latter case

这里有更多详细信息:What are bitwise shift (bit-shift) operators and how do they work?