2016-07-10 1 views
2

이는 좌측 시프트 int << nint * pow(2,n)뿐만 검사 플로우없이 동등한 것을 말한다.`<< "는 파이썬 3에서`pow (2, n)`과 동일합니까? 파이썬 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>위한 파이썬 설명서

하지만 파이썬은 정수를 임의의 정밀도의 long으로 자동 승격하므로, 오버 플로우가 없으므로 문자 그대로 차이가 없다는 것을 의미합니까?

+3

'4 * pow (2, -1)'및 '4 << -1'의 경우 오버플로가 확실하지 않습니다. – TessellatingHeckler

+0

@TessellatingHeckler "음수 시프트 수는 올바르지 않으므로 ValueError가 발생합니다. " –

+0

@ EliSadoff 반면 pow (2, -1)는 괜찮습니다. 그러므로 그들은 다릅니다. 질문이 "문자 그대로 차이가 없다는 것을 의미합니까?"라고 말하면 문자 그대로 차이가 있습니다. – TessellatingHeckler

답변

1

오버플로 될 수있는 데이터 유형과 관련된 작업을 사용하지 않는 한 Python에서 오버플로에 대해 걱정할 필요가 없습니다. 여기에는 파이썬의 내장 숫자 유형 (int, float, long, complex)이 포함되지 않습니다.

양수 값이 n 인 경우 문서가 보관됩니다. 오버 플로우 검사가 수행되도록 지정하는 이유는 외부 라이브러리, 특히 C로 구현 된 라이브러리가 그러한 검사가 수행되지 않는 경우 오버 플로우 될 수 있기 때문입니다.

pow에 대한 설명서에서 언급했듯이 int * (2**n)과 동일합니다.

관련 문제