2016-08-24 4 views
2

:무제한 정수 정밀도 <a href="https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex" rel="nofollow">Python Numeric Types</a>에서

정수 무제한 정밀도를 가지고있다.

이 테스트

#include <stdio.h> 

int main(void) { 
    printf("%zu bytes", sizeof(long long)); 
    return 0; 
} 

날 리눅스 8 bytes 또는 64 비트를 제공한다.

어떻게 이것을 cpython으로 구현 했는가 (이것은 코멘트 섹션에서 대답했다)?

정수가 구현시 long long을 초과하면 어떻게됩니까?

8 비트 정수와 8 바이트 정수 사이의 산술 연산의 속도 차이는 얼마나됩니까?

+0

가능한 [파이썬은 int와 long을 어떻게 관리합니까?] (http://stackoverflow.com/questions/2104884/how-does-python-manage-int-and-long) – dhke

+0

@dhke 부분적으로 . 그러나 나는 오버 사이즈 된 정수가 어떻게 저장되는지 궁금해. 그것은 차이를 만들어야한다. – light2yellow

+0

'% zd'은 잘못된 변환 지정자입니다. 'size_t'는 부호가 없습니다! – Olaf

답변

-1

파이썬에서 더 큰 숫자를 사용하면 (8 바이트가 아닌) 어떻게합니까?

파이썬은 항상 정확한 숫자를 저장하고 근사치를 저장합니다. 아주 큰 INTEGER가 있더라도 (그러나 다른 유형에는 해당되지 않습니다)

어떻게 문자 그대로 시스템에 저장됩니까? 몇 가지 작은 정수처럼?

그건 파이썬 구현입니다. 당신은 여기에 소스 코드에서 찾을 수있다 : svn.python.org/projects/python/trunk/Objects/longobject.c (감사 @samgak)

그것은 거대이 수에를 arithmetics를 느리게합니까?

32 비트 시스템에서 숫자가 .e.g 2^32보다 커지면 계산이 느려집니다. 구현에 따라 다소 차이가 있습니다.

파이썬은 어떻게 번호를 발견합니까?

거대한 정수가 다른 방식으로 저장되고 모든 산술 연산이 적합하도록 조정되었습니다.

파이썬 2에서 오랫동안 저장하고 L을 문자열 표현에 추가하는 것을 제외하고는 Python의 2 & 3 동작에 차이가 있습니까?

파이썬 2와 3은 높은 수준의 동작을 가져야합니다.

+0

> Thats python 구현은 물리적으로 어떻게 저장되는지 알 수 없습니다. Linux는 어떻습니까? 나는 그 질문을 편집했다. – light2yellow

+0

이것이 어떻게 구현되는지 알 수없는 이유는 무엇입니까? ** ** 어떻게 든 C 언어로 구현되었고, 나는 정확히 얼마나 궁금합니다. – light2yellow

+0

@ light2yellow 나는 (그러나 다른 사람들은) 그것이 어떻게 구현되는지를 안다. 이것이 어떻게 수행되는지를 알기 위해서는 파이썬의 소스 코드를 살펴 봐야 할 것이다. – Julien