sourcetip

긴 정수에 대한 최대값

fileupload 2023. 9. 25. 22:55
반응형

긴 정수에 대한 최대값

를 들어++의 C 의와 에 긴 을 할당하려면 합니까?LONG_MAX.

긴 정수:

명시적으로 정의된 제한은 없습니다.사용 가능한 주소 공간의 양은 실질적인 한계를 형성합니다.
( 사이트에서 가져온 것입니다.)숫자 유형에 대한 문서를 참조하십시오.Long integers have unlimited precision 파이썬 2에서 정수는 한계 이상으로 커지면 자동으로 longs로 전환됩니다.

>>> import sys
>>> type(sys.maxsize)
<type 'int'>
>>> type(sys.maxsize+1)
<type 'long'>


우리가 가지고 있는 정수의 경우

maxint 및 maxsize:

은 int 의은 Python 2.x 에서가 수 .sys.maxint되었지만, 3 에서는되었지만,sys.maxsize종종 대신 사용할 수 있습니다.변경 로그에서:

정수 값에 더 이상 제한이 없으므로 sys.maxint 상수가 제거되었습니다.그러나 sys.maxsize는 실제 목록이나 문자열 인덱스보다 큰 정수로 사용할 수 있습니다.이것은 구현의 "자연적인" 정수 크기를 준수하며, 일반적으로 동일한 플랫폼에서 이전 릴리스의 sys.maxint와 동일합니다(동일한 빌드 옵션을 가정).

그리고 차이점에 관심이 있는 모든 사람(Python 2.x):

sys.maxint 파이썬의 정규 정수형에서 지원하는 가장 큰 양의 정수.적어도 2**31-1입니다.가장 큰 음의 정수는 -maxint-1인데, 비대칭성은 2의 상보 이진 산술을 사용한 결과입니다.

sys.maxsize 플랫폼의 Py_ssize_t 유형에서 지원하는 가장 큰 양의 정수이므로 최대 크기 목록, 문자열, dict 및 기타 많은 컨테이너가 가질 수 있습니다.

완성도를 위해 Python 3 버전을 소개합니다.

sys.maxsize Py_ssize_t 유형의 변수가 취할 수 있는 최대값을 제공하는 정수입니다.32비트 플랫폼에서는 보통 2^31 - 1이고 64비트 플랫폼에서는 2^63 - 1입니다.

플로트:

float("inf")그리고.float("-inf") 숫자 할 수 있습니다 이는 다른 숫자 유형과 비교할 수 있습니다.

>>> import sys
>>> float("inf") > sys.maxsize
True

long임의로 클 수 있습니다.다를 할 수 .float('inf')은 다른 하는 데 에 Python 다를 할 수 .float('-inf').

제목 질문에 대한 직접적인 답변:

Python에서는 정수의 크기가 무제한이며 최대값이 없습니다.

기본적인 사용 사례를 명시한 주소:

당신이 하려는 일에 대한 당신의 의견에 따르면, 당신은 현재 다음과 같은 생각을 하고 있습니다.

minval = MAXINT;
for (i = 1; i < num_elems; i++)
    if a[i] < a[i-1]
        minval = a[i];

파이썬에서는 그런 식으로 생각하지 않습니다.Python으로 번역하는 것이 더 나을 것입니다(그러나 여전히 최선은 아닙니다).

minval = a[0]  # Just use the first value
for i in range(1, len(a)):
    minval = min(a[i], a[i - 1])

위의 내용은 MAXINT를 전혀 사용하지 않습니다.솔루션의 해당 부분은 모든 프로그래밍 언어에 적용됩니다.컬렉션에서 가장 작은 값을 찾기 위해 가능한 가장 높은 값을 알 필요는 없습니다.

하지만 어쨌든, 파이썬에서 당신이 하는 일은

minval = min(a)

를 전혀 , .emin()함수는 전체 집합의 최소값을 가져옵니다.

longpython 2.x의 type은 임의의 정밀도 산술을 사용하고 가능한 최대값과 같은 것이 없습니다.사용 가능한 메모리에 의해 제한됩니다.파이썬 3.x는 네이티브 머신 정수로 표현할 수 없는 값에 대한 특별한 유형이 없습니다. 모든 것은int그리고 변환은 뒤에서 처리됩니다.

Python의 Long은 C/C++와 달리 정밀도가 무제한입니다.자세한 내용은 python의 숫자 유형 섹션을 참조하십시오.정수의 최대값을 결정하기 위해서는 다음을 참조하면 됩니다.sys.maxint. sys의 설명서에서 더 자세한 내용을 확인할 수 있습니다.

사용 가능: 플로트의 최대값은

float('inf')

부정적으로

float('-inf')

64비트 시스템의 CPython 3.11에서 최대 정수는

2 ** 276701161105643274210 - 1

저장하려면 35엑사바이트의 메모리가 필요하며, 현재(2023년 5월) NewEgg에서 32GB당 65달러의 가격으로 약 700억 달러가 소요됩니다.실질적인 측면에서 파이썬의 최대 정수는 컴퓨터에 저장된 메모리의 양에 따라 제한됩니다.


CPython 3.11은 정수를 다음과 같은 C 구조로 저장합니다.

struct PyLongObject {
    Py_ssize_t ob_refcnt;
    PyTypeObject* ob_type;
    Py_ssize_t ob_size;
    uint32_t ob_digit[1];
};

는 32 됩니다 (uint32_t ob_digit[1]이 중 30비트만 정수의 절대값을 저장하고 64비트 부호가 붙은 2의 보 정수는 배열의 길이를 저장합니다.Py_ssize_t ob_size의 정수는의 "크기를 갖습니다 "의" 를를 합니다.그래서 저희가.

2 ** ((2 ** 63 - 1) * 30) - 1

/ 하려면 A) / math.inf. 아니면math.nan하자면, 되는.FALSE든함) )nan == nan ID()를 합니다.is 및 ) 를 (:nan - nan)nan. 또는 사용 사례에 따라 상당히 높은 실수(예:sys.maxsize: (: )mybits & bitmask) -1.

B) 플랫폼 프리미티브 최대 서명 long int(또는 long long int)를 가져오려면:

>>> 256 ** sys.int_info.sizeof_digit // 2 - 1  # Python’s internal primitive
2147483647
>>> 256 ** ctypes.sizeof(ctypes.c_long) // 2 - 1  # CPython
2147483647
>>> 256 ** ctypes.sizeof(ctypes.c_longlong) // 2 - 1  # CPython
9223372036854775807
>>> 2**63 - 1  # Java / JPython primitive long
9223372036854775807

(try C) ()에 롱런 할 수 256**int(8e9)- 에 될 수 .KeyboardInterrupt이 이미 하고 보다 할 수 sys.float_info.max.

언급URL : https://stackoverflow.com/questions/9860588/maximum-value-for-long-integer

반응형