Search

기본형 - 정수형

정수형의 표현 형식과 범위

n비트로 표현 가능한 정수의 개수 : 2^n개 (2^n-1개 + 2^n-1개) n비트로 표현 가능한 정수의 범위 : -2^n-1 ~ 2^n-1 -1
Search
자료형
bit
byte
저장 가능한 값의 범위
비고
short
Open
16
2
-32,768 ~ 32767 (-2^15 ~ 2^15-1)
int
Open
32
4
-2,147,483,648 ~ 2,147,483,647 (-2^31 ~ 2^31-1)
약 10자리 수 저장 가능
long
Open
64
8
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (-2^63 ~ 2^63-1)
약 19자리 수 저장 가능
COUNT4

정수형의 선택 기준

정수형 변수 선언 시, 기본적으로 int 타입을 선택 int 범위(약 ±20억)을 넘는 수를 다룰 경우에만 long 사용
byte, short가 메모리 절약엔 더 효율적이지만, 범위가 좁아 연산 시 범위를 넘을 우려가 있음.
JVM의 피연산자 스택이 피연산자를 4 byte 단위로 저장하기 때문에 short, long의 4 byte 변환 작업이 필요 → 오히려 더 비효율적일 수도.. 그냥 int로 가자

정수형의 오버플로우 (Overflow)

타입이 표현할 수 있는 값의 범위를 넘어서는 것
오버플로우됐다고 에러가 발생하지는 않음.
최대값 + 1 → 최소값 4 bit 2진수 1111 + 1 → 0000
최소값 -1 → 최대값 4 bit 2진수 0000 - 1 → 1111

부호 있는 정수의 오버플로우

부호비트가 0에서 1이될 때 오버플로우 발생
Search
부호 없는 10진수
2진수
부호 있는 10진수
오버플로우
0000
0
0001
1
0010
2
0011
3
0100
4
0101
5
0110
6
0111
7 (최대값)
오버플로우 발생
1000
-8 (최소값)
오버플로우 발생
1001
-7
1010
-6
1011
-5
1100
-4
1101
-3
1110
-2
15 (최대값)
Open
1111
-1
오버플로우 발생
0 (최소값)
Open
0000
0
오버플로우 발생
0001
1
0010
2
OverflowEx.java

참고 자료