<< / >> 运算符表示什么? (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?
表达式 (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?