2016-07-10 15 views
2

左シフトint << nint * pow(2,n)になく、チェックオーバーフローせずに同等であるといわれています。`<<"はpython 3の `pow(2、n)`と同じですか? python 3.5 <a href="https://docs.python.org/3/library/stdtypes.html" rel="nofollow">https://docs.python.org/3/library/stdtypes.html</a></p> <p>のためのPythonドキュメントで

しかし、pythonは整数を任意の精度のlongに自動的に昇格させるので、これは文字通り何の違いもないことを意味しますか?

+3

'4 * pow(2、-1)'と '4 << -1'では、オーバーフローについてはわかりません。 – TessellatingHeckler

+0

@TessellatingHeckler"負のシフトカウントは不正で、ValueErrorが発生します。 " –

+0

@EliSadoff pow(2、-1)は問題ありません。したがって、それらは異なっています。 「文字通り差はない」という質問があれば、文字通り違いがあります。 – TessellatingHeckler

答えて

1

オーバーフローする可能性のあるデータ型を含む操作を使用している場合を除き、Pythonのオーバーフローを心配する必要はありません。これには、Pythonの組み込み数値型(intfloatlongcomplex)は含まれません。

正の値がnの場合、ドキュメントが保持されます。オーバーフローチェックが行われるように指定する理由は、外部ライブラリ(特にC言語で実装されているライブラリ)がオーバーフローする可能性があるためです。

powのドキュメントで説明したように、これはint * (2**n)にも相当します。

関連する問題

 関連する問題