긴 정수에 대한 최대값
를 들어++의 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 및 기타 많은 컨테이너가 가질 수 있습니다.
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()
함수는 전체 집합의 최소값을 가져옵니다.
long
python 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
'sourcetip' 카테고리의 다른 글
구분된 목록을 데이터베이스 열에 저장하는 것이 정말 그렇게 나쁜가요? (0) | 2023.09.25 |
---|---|
다른 스키마의 사용자에게 권한 부여 (0) | 2023.09.25 |
하위 폴더를 PHP를 사용하여 WordPress에서 국가 코드로 동적으로 다시 작성 (0) | 2023.09.25 |
div 크기 유지 종횡비 응답적으로 변경 (0) | 2023.09.25 |
속성별 필터링 (0) | 2023.09.25 |