在python 3.5 https://docs.python.org/3/library/stdtypes.html
的python文档中据说左移int << n
相当于int * pow(2,n)
,但没有溢出检查。
但是因为python会自动将整数提升为任意精度的长度,这是否意味着没有区别(因为不能有溢出)?
答案 0 :(得分:1)
除非您使用涉及可能溢出的数据类型的操作,否则您不必担心Python中的溢出。这不包括Python的内置数字类型(int
,float
,long
,complex
)。
对于n
的正值,文档成立。他们指定完成溢出检查的原因是因为外部库,特别是那些在C中实现的库,如果没有进行这样的检查就会发生溢出。
正如pow
的文档中所述,这也等同于int * (2**n)
。