在&python 3中,`<<&`相当于`pow(2,n)`?

时间:2016-07-10 01:35:09

标签: python-3.x bitwise-operators

在python 3.5 https://docs.python.org/3/library/stdtypes.html

的python文档中

据说左移int << n相当于int * pow(2,n),但没有溢出检查。

但是因为python会自动将整数提升为任意精度的长度,这是否意味着没有区别(因为不能有溢出)?

1 个答案:

答案 0 :(得分:1)

除非您使用涉及可能溢出的数据类型的操作,否则您不必担心Python中的溢出。这不包括Python的内置数字类型(intfloatlongcomplex)。

对于n的正值,文档成立。他们指定完成溢出检查的原因是因为外部库,特别是那些在C中实现的库,如果没有进行这样的检查就会发生溢出。

正如pow的文档中所述,这也等同于int * (2**n)