{{위키데이터 속성 추적}}
'''정수형'''(整數型)은 컴퓨터 과학에서 수학의 [[정수]]의 일부 [[유한 집합]]을 대표하는 [[자료형]]이다.

== 일반적인 필수 자료형 ==
{| class="wikitable"
|-
! rowspan="2" | 비트
! rowspan="2" | 이름
! rowspan="2" | 범위
! rowspan="2" | 십진법 (대략값)
! rowspan="2" | 이용
!scope=col colspan="5" | 기능
|-
! [[C (프로그래밍 언어)|C]]/[[C++]] !! C# !! 델파이 !! 자바 !! [[SQL]]
|-
|rowspan=2| 4
|rowspan=2| [[니블|nibble]], [[니블|semioctet]]
|''Signed:'' <math>-8</math> ~ <math>7</math>, <math>-(2^3)</math> ~ <math>2^3-1</math>
|1
| rowspan="2" colspan="6"| [[이진화 십진법|binary-coded decimal]], single decimal로 표현.
|-
|''Unsigned:'' <math>0</math> ~ <math>15</math> → 같은 값:  ~ <math>2^4 -1</math>
|2
|-
|rowspan=2| 8
|rowspan=2| [[바이트|byte]], [[옥텟|octet]]
|''Signed:'' [[127|<math>-128</math> ~ <math>127</math>]], <math>-(2^7)</math> ~ <math>2^7-1</math>
| 3
| rowspan="2" | [[아스키]] 문자
| int8_t, char
| sbyte
| Shortint
| byte
| tinyint
|-
|''Unsigned:'' <math>0</math> ~ <math>255</math> → 같은 값:  ~ <math>2^8 -1</math>
| 3
| uint8_t, char
| byte
| Byte
| ''n/a''
| unsigned tinyint
|-
|rowspan=2| 16
|rowspan=2| halfword, [[워드 (컴퓨팅)|word]], short
|''Signed:'' [[30000|<math>-32,768</math> ~ <math>32,767</math>]], <math>-(2^{15})</math> ~ <math>2^{15}-1</math>
| 5
|rowspan=2 colspan="1"| [[UCS-2]] 문자
| int16_t, short
| short
| Smallint
| short
| smallint
|-
|''Unsigned:'' <math>0</math> ~ <math>65,535</math> → 같은 값:  ~ <math>2^{16} -1</math>
| 5
| uint16_t
| ushort
| Word
| char
| unsigned smallint
|-
|rowspan=2| 32
|rowspan=2| word, long, doubleword, longword, int
|''Signed:'' [[2147483647|<math>-2,147,483,648</math> ~ <math>2,147,483,647</math>]], <math>-(2^{31})</math> ~ <math>2^{31}-1</math>
| 10
|rowspan=2 colspan="1"| [[UCS-4]] 문자, [[트루컬러]] + 알파, [[FourCC]], 액션스크립트 int
| int32_t, int, long
| int
| LongInt; Integer
| int
| int
|-
|''Unsigned:'' <math>0</math> ~ <math>4,294,967,295</math> → 같은 값:  ~ <math>2^{32} -1</math>
| 10
| uint32_t
| uint
| LongWord; Cardinal
| ''n/a''
| unsigned int
|-
| rowspan="2" | 64
| rowspan="2" | word, doubleword, longword, long long, quad, quadword, int64
|''Signed:'' <math>-9,223,372,036,854,775,808</math> ~ <math>9,223,372,036,854,775,807</math>, <math>-(2^{63})</math> ~ <math>2^{63}-1</math>
| 19
| rowspan="2" | 매우 큰 수
| int64_t, long, long long
| long
| Int64
| long
| bigint
|-
|''Unsigned:'' <math>0</math> ~ <math>18,446,744,073,709,551,615</math> → 같은 값:  ~ <math>2^{64} -1</math>
|20
| uint64_t
| ulong
| ''n/a''
| ''n/a''
| unsigned bigint
|-
|rowspan=2| 128
|rowspan=2| octaword, double quadword
|''Signed:'' <math>-170,141,183,460,469,231,731,687,303,715,884,105,728</math> ~ <math>170,141,183,460,469,231,731,687,303,715,884,105,727</math>, <math>-(2^{127})</math> ~ <math>2^{127}-1</math>
| 39
|rowspan=2 colspan="6" | C: 비표준 컴파일러 확장으로만 사용 가능
|-
|''Unsigned:'' <math>0</math> ~ <math>340,282,366,920,938,463,463,374,607,431,768,211,455</math> → 같은 값:  ~ <math>2^{128} -1</math>
|39
|-
| rowspan="2" | ''n''
| rowspan="2" | ''n''-bit integer<br /> (일반적인 경우)
| ''Signed:'' <math>(-2^{n-1})</math> ~ <math>(2^{n-1} -1)</math>
| colspan="2" | <math>\lceil (n-1) \log_{10}{2} \rceil</math>
| colspan="5" | [[에이다 (프로그래밍 언어)|에이다]] <code>범위 -2**(n-1)..2**(n-1)-1</code>
|-
| ''Unsigned:'' 0 ~ <math>(2^{n}-1)</math>
| colspan="2" | <math>\lceil n \log_{10}{2} \rceil</math>
| colspan="5" | 에이다 <code>범위 0..2**n-1</code>, 에이다 <code>mod 2**n</code>
|}

== 바이트와 옥텟 ==
{{본문|바이트}}

== 워드 ==
{{본문|워드 (컴퓨팅)}}

== C/C++ ==
{{C 언어의 자료형}}
{{본문|char}}
{{본문|int (C 프로그래밍 언어)}}
[[C (프로그래밍 언어)|C]]/[[C++]] 언어에서는 char, int, long, signed, unsigned 등의 키워드에 의해 구현된다. 다른 언어에 비해 C언어는 CPU의 장점을 살려 기계어로 컴파일 되기 때문에 CPU의 데이터 처리 비트와 부호를 다양하게 반영한다. 이를 위해 키워드를 다양하게 두고 있다.

char을 사용한 정수형은 1바이트로 고정되지만 int는 CPU마다 다른 비트 수를 갖는다. 따라서 개발자는 사용하는 CPU와 컴파일러의 사양을 확인해서 얼마의 비트수로 처리되는가를 인식해야 한다.
; 8비트 CPU의 일반적인 처리 비트수
* char : 8비트 정수형
* int : 16비트 정수형
* long int : 32비트 정수형
; 32비트 CPU의 일반적인 처리 비트수
* char : 8비트 정수형
* short : 16비트 정수형
* int : 32비트 정수형
* long long : 64비트 정수형
; 정수형 부호지정
* signed char|int : 부호를 갖는 정수형으로 [[2의 보수]]체계를 사용한다.
* unsigned char|int : 부호가 없는 정수형으로 이진법과 같은 수의 배치를 갖는다.

== 자바 ==
{{본문|자바}}
[[파일:Java virtual machine architecture.svg|섬네일|200px|자바소스코드는 컴파일러에 의해 [[바이트코드]]로 생성되고, [[JVM]]에 의해 해석되고 수행된다.]]
[[자바 (프로그래밍 언어)|자바]]는 C언어처럼 특정 CPU에 맞추어 컴파일 되는 것이 아니고, 어느 CPU나 실행될 수 있는 BYTE 코드의 중간 형태의 실행 파일을 만든다. 따라서 C언어가 CPU의 상황에 맞추어 정수형 비트 수를 다르게 사용하는 것에 비해, 자바는 [[가상 머신]]([[VM]])에 의해 해석되고 실행된다. 일종의 [[에뮬레이션]] 된다는 느낌의 실행 방식이다. 이렇게 되면 해석(Interpreter에 의해 번역)되어 실행되므로 정수형 비트수를 다르게 할 필요가 없다. C/C++는 정수 실행이 기계어에 의해 ALU과 연관되어 실행되는 것과 대조적이다.

;자바 고유의 정수 비트 수
* byte : 8비트 정수형
* short : 16비트 정수형
* int : 32비트 정수형
* long : 64비트 정수형

C언어가 int을 CPU에 따라 16비트 또는 32비트를 사용하는 반면 자바는 32비트를 사용한다. 일종의 통일성을 유지하므로 C언어 보다 편리하다. 정수 부호의 처리는 [[2의 보수]]로 C언어와 동일하다.

자바에서 char 변수는 16비트의 [[유니코드]]([[UNICODE]])를 처리하므로 C/C++의 char와 혼동하면 안 된다.

== 같이 보기 ==
* 수학에서의 [[정수]]
* [[char]] C 프로그래밍 언어
* [[int (C 프로그래밍 언어)]]

{{자료형}}

[[분류:원시 자료형]]
[[분류:자료형]]
[[분류:컴퓨터 산술]]