정수형
컴퓨터 과학에서 정수형(整數型, integer)은 정수의 구간을 나타내는 자료형인 정수 데이터 타입의 데이터이다.[1] 정수 데이터 타입은 크기가 다양할 수 있으며 음수 값을 포함할 수도, 포함하지 않을 수도 있다. 정수는 컴퓨터에서 일반적으로 비트들의 집합으로 표현된다. 이 그룹의 크기는 다양하며, 따라서 사용 가능한 정수 크기의 집합은 컴퓨터 유형에 따라 달라진다. 컴퓨터 하드웨어는 거의 항상 프로세서 워드나 메모리 주소를 정수로 나타내는 방법을 제공한다.
값과 표현
[편집]정수형을 가진 항목의 값은 그에 대응하는 수학적 정수이다. 정수형은 부호가 없는(비음수 정수만 표현 가능) 형태이거나 부호가 있는(음수도 표현 가능) 형태일 수 있다.[2]
정수 값은 일반적으로 프로그램의 소스 코드에서 앞에 +나 -가 붙을 수 있는 일련의 숫자로 지정된다. 일부 프로그래밍 언어는 십육진법(기수 16)이나 팔진법(기수 8)과 같은 다른 표기법을 허용하기도 한다. 또한 일부 프로그래밍 언어는 자릿수 구분 기호를 사용할 수 있게 한다.[3]
이 데이터의 내부 표현은 값이 컴퓨터 메모리에 저장되는 방식이다. 수학적 정수와 달리, 컴퓨터의 일반적인 데이터는 가능한 최솟값과 최댓값이 정해져 있다.
양의 정수의 가장 일반적인 표현은 이진법을 사용하는 비트 문자열이다. 비트를 저장하는 메모리 바이트의 순서는 다양하다. 엔디언을 참조하라. 정수형의 폭, 정밀도 또는 비트 수는 표현에 사용되는 비트의 개수이다. n비트 정수형은 2n개의 숫자를 인코딩할 수 있다. 예를 들어 부호 없는 정수형은 일반적으로 0부터 2n − 1까지의 비음수 값을 나타낸다. 정수 값을 비트 패턴으로 인코딩하는 다른 방식도 가끔 사용되는데, 예를 들어 이진화 십진법이나 그레이 부호, 또는 ASCII와 같은 인쇄 가능한 문자 코드가 있다.
이진 컴퓨팅 시스템에서 부호 있는 숫자를 표현하는 잘 알려진 방법에는 네 가지가 있다. 가장 일반적인 것은 2의 보수이며, 이를 통해 n비트 부호 있는 정수형은 −2(n−1)부터 2(n−1) − 1까지의 숫자를 나타낼 수 있다. 2의 보수 연산은 표현과 값 사이에 완벽한 일대일 대응이 존재하고(특히 −0이 없음), 덧셈, 뺄셈, 곱셈에서 부호 있는 타입과 부호 없는 타입을 구별할 필요가 없기 때문에 편리하다. 다른 가능성으로는 오프셋 이진법, 부호-크기 표현, 1의 보수가 있다.
일부 컴퓨터 언어는 정수 크기를 기계 독립적인 방식으로 정의하지만, 다른 언어는 기본 프로세서 워드 크기에 따라 정의가 달라진다. 모든 언어 구현체가 모든 정수 크기의 변수를 정의하는 것은 아니며, 특정 구현 내에서 정의된 크기가 서로 구별되지 않을 수도 있다. 한 프로그래밍 언어에서의 정수는 다른 언어, 다른 프로세서, 또는 다른 비트 환경에서 크기가 다를 수 있다. § 워드를 참조하라.
일부 초기 컴퓨터 아키텍처는 이진화 십진법(BCD)이나 다른 형식으로 저장된 정수의 10진 표현을 사용했다. 이러한 값은 일반적으로 10진수 한 자리당 4비트(가끔 니블이라 부름)의 데이터 크기를 요구하며, 보통 부호를 위한 추가 비트가 필요하다. 많은 현대 CPU는 10진 정수를 확장 자료형으로 제한적으로 지원하며, 이러한 값을 이진 값으로 상호 변환하는 명령어를 제공한다. 아키텍처에 따라 10진 정수는 고정 크기(예: 32비트 워드에 부호와 함께 7자리 10진수)를 가지거나 가변 길이(최대 자릿수까지)를 가지며, 일반적으로 바이트당 두 자리씩 차지한다.
일반적인 정수 데이터 타입
[편집]| 비트 | 이름 | 범위 (부호 있는 경우 2의 보수 가정) | 10진수 자릿수 | 용도 | 구현 | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| C/C++ | C# | 파스칼 및 델파이 | 자바 | SQL[a] | 포트란 | D | 러스트 | |||||
| 4 | 니블, 세미옥텟 | 부호 있음: −8부터 7까지, −(23)부터 23 − 1까지 | 0.9 | 이진화 십진법, 단일 10진수 representation | — | |||||||
| 부호 없음: 0부터 15까지, 24 − 1 | 1.2 | |||||||||||
| 8 | 바이트, 옥텟, i8, u8 | 부호 있음: −128부터 127까지, −(27)부터 27 − 1까지 | 2.11 | ASCII 문자, UTF-8 문자 인코딩의 코드 단위 | int8_t, signed char[b] |
sbyte, System.SByte |
Shortint |
byte, java.lang.Byte |
tinyint |
INTEGER[c] |
byte |
i8 |
| 부호 없음: 0부터 255까지, 28 − 1 | 2.41 | uint8_t, unsigned char[b] |
byte, System.Byte |
Byte |
빈칸 | unsigned tinyint |
빈칸 | ubyte |
u8 | |||
| 16 | 하프워드, 워드, short, i16, u16 | 부호 있음: −32,768부터 32,767까지, −(215)부터 215 − 1까지 | 4.52 | 유니코드 문자, UTF-16 문자 인코딩의 코드 단위 | int16_t, short,[b] int[b] |
short, System.Int16 |
Smallint |
short, java.lang.Short |
smallint |
INTEGER[c] |
short |
i16 |
| 부호 없음: 0부터 65,535까지, 216 − 1 | 4.82 | uint16_t, unsigned,[b] unsigned int[b] |
ushort, System.UInt16 |
Word |
char[d], java.lang.Character |
unsigned smallint |
빈칸 | ushort |
u16 | |||
| 32 | 워드, long, 더블워드, longword, int, i32, u32 | 부호 있음: −2,147,483,648부터 2,147,483,647까지, −(231)부터 231 − 1까지 | 9.33 | UTF-32 문자, 알파 채널이 있는 트루컬러, FourCC, 32비트 컴퓨팅의 포인터 | int32_t, int,[b] long[b] |
int, System.Int32 |
LongInt; Integer[e] |
int, java.lang.Integer |
int |
INTEGER[c] |
int |
i32 |
| 부호 없음: 0부터 4,294,967,295까지, 232 − 1 | 9.63 | uint32_t, unsigned,[b] unsigned int,[b] unsigned long[b] |
uint, System.UInt32 |
LongWord; DWord; Cardinal[e] |
빈칸 | unsigned int |
빈칸 | uint |
u32 | |||
| 64 | 워드, 더블워드, longword, long, long long, quad, quadword, qword, int64, i64, u64 | 부호 있음: −9,223,372,036,854,775,808부터 9,223,372,036,854,775,807까지 | 18.96 | 시간 (예: 유닉스 시간 이후의 밀리초), 64비트 컴퓨팅의 포인터 | int64_t, long,[b] long long[b] |
long, System.Int64 |
Int64 |
long, java.lang.Long |
bigint |
INTEGER[c] |
long |
i64 |
| 부호 없음: 0부터 18,446,744,073,709,551,615까지 | 19.27 | uint64_t, unsigned long long[b] |
ulong, System.UInt64 |
UInt64; QWord |
빈칸 | unsigned bigint |
빈칸 | ulong |
u64 | |||
| 128 | octaword, 더블 쿼드워드, i128, u128 | 부호 있음: −170,141,183,460,469,231,731,687,303,715,884,105,728부터 170,141,183,460,469,231,731,687,303,715,884,105,727까지 | 38.23 | 복잡한 과학 calculations, | 비표준 또는 컴파일러 전용 확장으로만 사용 가능 | cent[f] |
i128 | |||||
| 부호 없음: 0부터 340,282,366,920,938,463,463,374,607,431,768,211,455까지 | 38.53 | ucent[f] |
u128 | |||||||||
| n | n비트 정수 (일반 경우) |
부호 있음: −(2n−1)부터 (2n−1 − 1)까지 | (n − 1) log10 2 | C23: _BitInt(n), signed _BitInt(n) |
에이다: range -2**(n-1)..2**(n-1)-1 | |||||||
| 부호 없음: 0부터 (2n − 1)까지 | n log10 2 | C23: unsigned _BitInt(n) |
에이다: range 0..2**n-1, mod 2**n; 파이썬, C++ 등 많은 언어에서 표준 라이브러리나 타사 임의 정밀도 산술 라이브러리의 BigDecimal 또는 Decimal 클래스. | |||||||||
서로 다른 CPU는 서로 다른 정수 데이터 타입을 지원한다. 일반적으로 하드웨어는 부호 있는 타입과 부호 없는 타입을 모두 지원하지만, 고정된 폭의 작은 집합만 지원한다.
위 표는 일반적인 프로세서의 하드웨어에서 지원되는 정수형 폭을 나열한 것이다. 고수준 프로그래밍 언어는 더 많은 가능성을 제공한다. 하드웨어 지원 최대 타입보다 두 배 많은 비트를 가진 '더블 폭' 정수 타입을 가지는 것이 흔하다. 많은 언어는 비트 필드 타입(최대 하드웨어 폭보다 작게 제한된 지정된 개수의 비트)과 범위 타입(지정된 범위의 정수만 나타낼 수 있음)도 가지고 있다.
리스프, 스몰토크, REXX, 하스켈, 파이썬, 라쿠와 같은 일부 언어는 임의 정밀도 정수(무한 정밀도 정수 또는 빅넘이라고도 함)를 지원한다. 최상위 구성 요소로 이 개념을 지원하지 않는 다른 언어들도 자바의 java.math.BigInteger 클래스나 perl의 "bigint" 패키지와 같이 더 작은 변수들의 배열을 사용하여 매우 큰 숫자를 나타내는 라이브러리를 가질 수 있다.[6] 이들은 숫자를 저장하는 데 필요한 만큼 컴퓨터의 메모리를 사용하지만, 컴퓨터는 저장 공간이 유한하므로 수학적 정수의 유한한 부분집합만 나타낼 수 있다. 이러한 방식은 매우 큰 숫자를 지원한다. 예를 들어 1킬로바이트의 메모리로 최대 2466자리 숫자를 저장할 수 있다.
불리언 자료형은 0과 1, 단 두 가지 값만 나타낼 수 있는 타입으로, 일반적으로 각각 거짓(false)과 참(true)으로 식별된다. 이 타입은 단일 비트를 사용하여 메모리에 저장할 수 있지만, 편리한 주소 지정과 빠른 접근을 위해 종종 전체 바이트를 할당받기도 한다.
4비트 단위는 니블이라 부른다. 하나의 니블은 십육진법의 한 자리와 대응하며, 이진화 십진법에서 한 자리 숫자나 부호 코드를 담는다.
바이트와 옥텟
[편집]바이트라는 용어는 처음에 '메모리의 최소 주소 지정 단위'를 의미했다. 과거에는 5, 6, 7, 8, 9비트 바이트가 모두 사용되었다. 개별 비트를 주소 지정할 수 있는 컴퓨터('비트 주소 지정 기계')나 16비트 또는 32비트 단위로만 주소 지정할 수 있는 컴퓨터('워드 주소 지정 기계')도 있었다. 바이트라는 용어는 보통 비트 및 워드 주소 지정 기계와 관련하여 사용되지 않았다.
옥텟이라는 용어는 항상 8비트 단위를 나타낸다. 이는 주로 바이트 폭이 다른 컴퓨터들이 통신해야 하는 컴퓨터 망 분야에서 사용된다.
현대적 용례에서 바이트는 거의 항상 8비트를 의미하는데, 다른 모든 크기는 사용되지 않게 되었기 때문이다. 따라서 바이트는 옥텟과 동의어가 되었다.
워드
[편집]'워드'라는 용어는 특정 컴퓨터 구조의 프로세서에 의해 동시에 처리되는 작은 비트 그룹을 의미한다. 따라서 워드의 크기는 CPU에 따라 다르다. 6, 8, 12, 16, 18, 24, 32, 36, 39, 40, 48, 60, 64비트를 포함하여 다양한 워드 크기가 사용되었다. 구조적인 특성상 워드의 크기는 보통 이후의 호환 가능한 CPU 특성이 아니라 제품군 내 최초의 CPU에 의해 결정된다. 롱워드, 더블워드, 쿼드워드, 하프워드와 같이 워드에서 파생된 용어들의 의미 또한 CPU와 운영체제에 따라 다르다.[7]
실질적으로 모든 새로운 데스크톱 프로세서는 64비트 워드를 사용할 수 있지만, 8비트 및 16비트 워드 크기를 가진 임베디드 시스템 프로세서도 여전히 흔하다. 36비트 워드 길이는 초기 컴퓨터 시대에 흔했다.
소프트웨어 이식성이 떨어지는 중요한 원인 중 하나는 모든 컴퓨터가 프로그래머가 사용하는 컴퓨터와 같은 워드 크기를 가질 것이라는 잘못된 가정이다. 예를 들어 C 언어를 사용하는 프로그래머가 215−1보다 큰 값을 저장할 변수를 잘못 int로 선언하면, 16비트 정수를 사용하는 컴퓨터에서 프로그램이 실패한다. 해당 변수는 어떤 컴퓨터에서든 최소 32비트인 long으로 선언했어야 했다. 프로그래머는 또한 포인터를 정보 손실 없이 정수로 변환할 수 있다고 잘못 가정할 수 있는데, 이는 (일부) 32비트 컴퓨터에서는 작동할 수 있지만 64비트 포인터와 32비트 정수를 가진 64비트 컴퓨터에서는 실패할 수 있다. 이 문제는 C99의 stdint.h에서 intptr_t 형태로 해결되었다.
프로그램의 비트 수는 프로그램이 실행되는 프로세서의 워드 크기(또는 비트 수)를 의미하거나, 실행 모드나 컨텍스트에 따라 다를 수 있는 메모리 주소 또는 포인터의 폭을 의미할 수 있다. 예를 들어, 마이크로소프트 윈도우의 64비트 버전은 기존 32비트 바이너리를 지원하며, 리눅스의 x32 ABI용으로 컴파일된 프로그램은 64비트 모드에서 실행되면서도 32비트 메모리 주소를 사용한다.[8]
표준 정수
[편집]표준 정수 크기는 플랫폼에 따라 다르다.
C에서는 int로 표시되며 최소 16비트여야 한다. 윈도우 및 유닉스 시스템은 32비트와 64비트 아키텍처 모두에서 32비트 int를 사용한다.
짧은 정수 (Short integer)
[편집]짧은 정수는 같은 기계의 표준 정수에 비해 범위는 작지만 더 적은 저장 공간을 차지하는 정수를 나타낼 수 있다.
C에서는 short로 표시된다. 최소 16비트여야 하며 종종 표준 정수보다 작지만, 반드시 그래야 하는 것은 아니다.[9][10] 준수 프로그램은 −(215 − 1)[11]와 215 − 1[12] 사이의 값을 안전하게 저장할 수 있다고 가정할 수 있지만, 범위가 더 크지 않다고 가정해서는 안 된다. 자바에서 short는 항상 16비트 정수이다. 윈도우 API에서 자료형 SHORT는 모든 기계에서 16비트 부호 있는 정수로 정의된다.[7]
| 프로그래밍 언어 | 자료형 이름 | 부호 여부 | 크기 (바이트) | 최솟값 | 최댓값 |
|---|---|---|---|---|---|
| C 및 C++ | short |
부호 있음 | 2 | −32,767[g] | +32,767 |
unsigned short |
부호 없음 | 2 | 0 | 65,535 | |
| C# | short |
부호 있음 | 2 | −32,768 | +32,767 |
ushort |
부호 없음 | 2 | 0 | 65,535 | |
| 자바 | short |
부호 있음 | 2 | −32,768 | +32,767 |
| SQL | smallint |
부호 있음 | 2 | −32,768 | +32,767 |
긴 정수 (Long integer)
[편집]긴 정수는 같은 기계의 표준 정수와 같거나 그보다 큰 범위를 가진 정수를 나타낼 수 있다.
C에서는 long으로 표시된다. 최소 32비트여야 하며 표준 정수보다 클 수도, 아닐 수도 있다. 준수 프로그램은 −(231 − 1)[11]와 231 − 1[12] 사이의 값을 안전하게 저장할 수 있다고 가정할 수 있지만, 범위가 더 크지 않다고 가정해서는 안 된다.
| 프로그래밍 언어 | 승인 유형 | 플랫폼 | 자료형 이름 | 저장 공간 (바이트) | 부호 있는 범위 | 부호 없는 범위 |
|---|---|---|---|---|---|---|
| C ISO/ANSI C99 | 국제 표준 | 유닉스 (16/32비트 시스템);[7] 마이크로소프트 윈도우 (16/32/64비트 시스템)[7] |
long |
4 (최소 요구사항 4) |
−(231 − 1) ~ (231 − 1) | 0 ~ (232 − 1) (최소 요구사항) |
| C ISO/ANSI C99 | 국제 표준 | 유닉스 (64비트 시스템)[7][10] | long |
8 (최소 요구사항 4) |
−(263 − 1) ~ (263 − 1) | 0 ~ (264 − 1) |
| C++ ISO/ANSI | 국제 표준 | 유닉스, 마이크로소프트 윈도우 (16/32비트 시스템) | long |
4[13] (최소 요구사항 4) |
−(231) ~ (231 − 1) |
0 ~ (232 − 1) (최소 요구사항) |
| C++/CLI | 국제 표준 ECMA-372 |
유닉스, 마이크로소프트 윈도우 (16/32비트 시스템) | long |
4[14] (최소 요구사항 4) |
−(231) ~ (231 − 1) |
0 ~ (232 − 1) (최소 요구사항) |
| VB | 기업 표준 | 마이크로소프트 윈도우 | Long |
4[15] | −(231) ~ (231 − 1) | 빈칸 |
| VBA | 기업 표준 | 마이크로소프트 윈도우, 맥 OS X | Long |
4[16] | −(231) ~ (231 − 1) | 빈칸 |
| SQL 서버 | 기업 표준 | 마이크로소프트 윈도우 | BigInt |
8 | −(263) ~ (263 − 1) | 0 ~ 264 |
| C#/ VB.NET | ECMA 국제 표준 | 마이크로소프트 .NET | long 또는 Int64 |
8 | −(263) ~ (263 − 1) | 0 ~ (264 − 1) |
| 자바 | 국제/기업 표준 | 자바 플랫폼 | long |
8 | −(263) ~ (263 − 1) | 빈칸 |
| 파스칼 | ? | 마이크로소프트 윈도우, 유닉스 | int64 |
8 | −(263) ~ (263 − 1) | 0 ~ 264 (Qword 타입) |
Long long
[편집]C 언어의 C99 버전과 C++의 C++11 버전에서는 표준 long 최소 용량의 두 배를 가진 long long 타입을 지원한다. 이 타입은 C 코드가 이전 C++ 표준인 C++03과 호환되도록 요구하는 컴파일러에서는 지원되지 않는데, 이는 C++03에 long long 타입이 존재하지 않았기 때문이다. ANSI/ISO 준수 컴파일러의 경우 부호 있는 경우 −(263 − 1)[11]부터 263 − 1까지, 부호 없는 경우 0부터 264 − 1까지의 최소 범위 요구사항[12]을 충족해야 하지만, 범위를 확장하는 것은 허용된다.[17][18] 이는 플랫폼 간에 코드와 데이터를 교환하거나 직접 하드웨어에 접근할 때 문제가 될 수 있다. 따라서 플랫폼 독립적인 정확한 폭의 타입을 제공하는 여러 헤더 세트가 존재한다. C 표준 라이브러리는 stdint.h를 제공하며, 이는 C99 및 C++11에서 도입되었다.
구문
[편집]정수 리터럴은 일련의 숫자로 구성된 일반적인 아라비아 숫자로 작성될 수 있으며, 음수는 값 앞에 하이픈 마이너스를 사용하여 나타낸다. 그러나 대부분의 프로그래밍 언어는 자릿수 구분을 위한 쉼표나 공백 사용을 허용하지 않는다. 정수 리터럴의 예시는 다음과 같다.
4210000-233000
많은 프로그래밍 언어에서 정수 리터럴을 작성하는 여러 가지 대안적인 방법이 있다.
- C의 영향을 받은 많은 프로그래밍 언어는 십육진법 값을 나타내기 위해
0X또는0x를 앞에 붙인다(예:0xDEADBEEF). 다른 언어들은 다른 표기법을 사용할 수 있다(예: 일부 어셈블리어는 십육진수 끝에H또는h를 붙임). - 펄, 루비, 자바, 줄리아, D, Go, C#, 러스트, 파이썬 (버전 3.6부터), PHP (버전 7.4.0부터[19])는 가독성을 위해 밑줄 문자를 허용하며, 고정 형식 포트란은 정수 리터럴 내의 공백을 무시한다. C(C23부터)와 C++은 이 목적으로 작은따옴표를 사용한다.
- C와 C++에서 맨 앞의 0은 팔진법 값을 나타낸다(예:
0755). 이는 주로 유닉스 모드와 함께 사용하기 위한 의도였으나, 일반 정수도 0으로 시작할 수 있어 비판을 받기도 했다.[20] 이에 따라 파이썬, 루비, 하스켈, OCaml은 십육진법 표기 방식에 따라 팔진값 앞에0O또는0o를 붙인다. - 자바, C#, 스칼라, 파이썬, 루비, OCaml, C(C23부터), C++을 포함한 여러 언어는 숫자 앞에
0B또는0b를 붙여 이진 값을 나타낼 수 있다.
극한값
[편집]많은 프로그래밍 언어에는 주어진 정수 타입으로 나타낼 수 있는 최소값과 최대값을 나타내는 미리 정의된 상수가 존재한다.
이에 대한 이름은 다음과 같다.
- 스몰베이직:
MAXINT[21] - 자바:
java.lang.Integer.MAX_VALUE,java.lang.Integer.MIN_VALUE[22]- 자바의 다른 정수 클래스에도 대응하는 필드가 존재한다.
- C:
INT_MAX,INT_MIN등.[23] - C++:
std::numeric_limits<int>::max(),std::numeric_limits<int>::min()등.[25] - 하스켈:
minBound,maxBound[26] - 파스칼:
MaxInt - 파이썬 2:
sys.maxint[27] - 파이썬 3:
sys.maxsize[28] - 러스트:
i32::MAX,i32::MIN등.[29] - 튜링:
maxint[30]
같이 보기
[편집]- 임의 정밀도 연산
- 이진화 십진법 (BCD)
- C 자료형
- 정수 오버플로
- 부호화된 숫자 표현
내용주
[편집]- ↑ 모든 SQL 방언이 부호 없는 자료형을 가진 것은 아니다.[4][5]
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 C/C++에서 char, short, int, long, long long의 크기는 언어 구현에 따라 다르다.
- 1 2 3 4 포트란은 정수 크기를 제어하기 위해 'kind'를 사용한다. 사용 가능한 kind를 정의하는 매개변수화된 상수는 iso_fortran_env 내장 모듈에서 사용할 수 있다. C 호환 kind를 정의하는 상수는 iso_c_binding 내장 모듈에서 사용할 수 있다.
- ↑ 자바는 char 타입에 대한 산술 연산을 직접 지원하지 않는다. 결과는 int에서 char로 다시 형 변환되어야 한다.
- 1 2 델파이의 Integer와 Cardinal 크기는 플랫폼에 따라 달라지며 보장되지 않는다. 보통 각각 LongInt와 LongWord로 정의된다.
- 1 2 향후 사용을 위해 예약됨. 아직 구현되지 않음.
- ↑ ISO C 표준은 부호 비트가 1이고 나머지 비트가 0인 값을 (부호-크기 및 2의 보수 표현의 경우) 혹은 모든 비트가 1인 값을 (1의 보수의 경우) 트랩 값으로 사용하기 위해 구현체가 예약할 수 있도록 허용한다. (예: 오버플로 지시)[11]
각주
[편집]- ↑ 〈Integer〉. 《A Dictionary of Computer Science》. Oxford University Press. 2016년 1월 21일. ISBN 978-0-19-968897-5.
- ↑ Cheever, Eric. “Representation of numbers”. Swarthmore College. 2011년 9월 11일에 확인함.
- ↑ Madhusudhan Konda (2011년 9월 2일). “A look at Java 7's new features - O'Reilly Radar”. Radar.oreilly.com. 2013년 10월 15일에 확인함.
- ↑ “Sybase Adaptive Server Enterprise 15.5: Exact Numeric Datatypes”.
- ↑ “MySQL 5.6 Numeric Datatypes”.
- ↑ “BigInteger (Java Platform SE 6)”. Oracle. 2011년 9월 11일에 확인함.
- 1 2 3 4 5 Fog, Agner (2010년 2월 16일). “Calling conventions for different C++ compilers and operating systems: Chapter 3, Data Representation” (PDF). 2010년 8월 30일에 확인함.
- ↑ Thorsten Leemhuis (2011년 9월 13일). “Kernel Log: x32 ABI gets around 64-bit drawbacks”. www.h-online.com. 2011년 10월 28일에 원본 문서에서 보존된 문서. 2011년 11월 1일에 확인함.
- ↑ Giguere, Eric (1987년 12월 18일). “The ANSI Standard: A Summary for the C Programmer”. 2010년 9월 4일에 확인함.
- 1 2 Meyers, Randy (2000년 12월 1일). “The New C: Integers in C99, Part 1”. drdobbs.com. 2010년 9월 4일에 확인함.
- 1 2 3 4 “ISO/IEC 9899:201x” (PDF). open-std.org. section 6.2.6.2, paragraph 2. 2016년 6월 20일에 확인함.
- 1 2 3 “ISO/IEC 9899:201x” (PDF). open-std.org. section 5.2.4.2.1. 2016년 6월 20일에 확인함.
- ↑ “Fundamental types in C++”. cppreference.com. 2011년 6월 13일에 원본 문서에서 보존된 문서. 2010년 12월 5일에 확인함.
- ↑ “Chapter 8.6.2 on page 12” (PDF). ecma-international.org.
- ↑ VB 6.0 도움말 파일
- ↑ “The Integer, Long, and Byte Data Types (VBA)”. microsoft.com. 2006년 12월 19일에 확인함.
- ↑ Giguere, Eric (1987년 12월 18일). “The ANSI Standard: A Summary for the C Programmer”. 2010년 9월 4일에 확인함.
- ↑ “American National Standard Programming Language C specifies the syntax and semantics of programs written in the C programming language.”. 2010년 8월 22일에 원본 문서에서 보존된 문서. 2010년 9월 4일에 확인함.
- ↑ “PHP: Integers - Manual”.
- ↑ ECMAScript 6th Edition draft: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-literals-numeric-literals 보관됨 2013-12-16 - 웨이백 머신
- ↑ “SmallBASIC | MAXINT”. 2025년 1월 20일에 확인함.
- ↑ “Integer (Java Platform SE 8 )”. 2025년 1월 20일에 확인함.
- ↑ “Numeric limits”. cppreference.com.
- ↑ “Limits of Basic Types”. 2025년 1월 20일에 확인함.
- ↑ “std::numeric_limits”. cppreference.com.
- ↑ “Prelude”.
- ↑ “28.1. sys — System-specific parameters and functions — Python 2.7.18 documentation” (영어). 《docs.python.org》. 2025년 9월 17일에 확인함.
- ↑ “sys — System-specific parameters and functions” (영어). 《Python 3.13.7 documentation》. 2025년 9월 17일에 확인함.
- ↑ “Primitive Type i32”. doc.rust-lang.org/std.
- ↑ Grogono, Peter (1995). 《Programming with Turing and Object Oriented Turing》. New York: Springer. 363쪽. doi:10.1007/978-1-4612-4238-3. ISBN 978-0-387-94517-0. LCCN 95010802.