Python中的<<是什么意思?

6

我在欧拉计划上解决了一个问题,但运行时间约为4分钟,超出了建议的时间,因此我正在浏览论坛中的不同解决方案。其中一个解决方案在列表推导式中包含符号<<。它看起来像这样

blist.extend([(i << 1) + 3 for i in range(num) if alist.get(i)])  

我找不到任何关于这个<<符号的确切含义。有人能帮我吗?


2
http://docs.python.org/library/operator.html#mapping-operators-to-functions - Trufa
3个回答

10
这是一个位移操作符(Python文档),在许多编程语言中都很常见,例如C、Java、PHP等。根据Python文档的说法:
它们将第一个参数左移或右移由第二个参数指定的位数。
n位的右移被定义为除以pow(2,n)。n位的左移被定义为乘以pow(2,n)。负移位计数会引发ValueError异常。
因此,在您的特定情况下,i << 1表示左移1位,相当于乘以2^1,或者只是2。

那么如果是 i>>1,它会是 mod(i,2) 还是会向右移动小数点? - gtmanfred
右移相当于除以2^n,或者在你提到的情况下,就是2。我想,这只是整数除法,所以不会得到小数值... - user456814
没错,那就是我想表达的,我不知道为什么说了模块。谢谢。 - gtmanfred

1

这是一个二进制位移操作符。

x << n
x shifted left by n bits

x >> n
x shifted right by n bits

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接