기본 자료형에는
참 true 과 거짓 false 을 저장하는 boolean,
정수를 저장하는 byte, short, int, long,
실수를 저장하는 float과 double
문자(정수)를 저장하는 char 자료형이 있다.
<각 자료형이 차지하는 메모리의 크기와 저장할 수 있는 값의 범위 >
우선 정수를 저장할 수 있는 자료형 4개를 살펴보면, 자료형의 크기가 클수록 저장하는 값의 범위도 넓어지는 것을 알 수 있다. 표현할 수 있는 값이 많은 만큼 차지하는 메모리의 크기도 증가하는 방식으므로 당연한 결과라고 할 수 있다.
그렇다면 각 정수 자료형의 값 범위는 어떻게 결정될까? 우선 n개의 비트 bit로 표현 할 수 있는 정수는 "2의 n제곱"개다.
예를 들어 2비트로 표현할 수 있는 정수는 2의 제곱(=4)개(00,01,10,11)다. 그렇다면 1byte(=8bit)크기인 바이트 자료형으로 표현할 수 있는 정수는 2의 8제곱(=256)개일 것이다.
정수는 음수,0,양수를 포함하므로 표현할 수 있는 전체 개수 중 반은 음수, 나머지 반은 0과 양수에 할당한다. 그 결과 바이트 자료형의 값 범위는 -2의 7제곱 ~ 2의 7제곱 - 1이다. 이와 같은 원리로 short, int, long 자료형도 값의 범위를 쉽게 계산할 수 있다.
이제 실수를 살펴보자. float와 double 자료형은 각각 4byte와 8byte로 int, long과 같지만, 저장할 수 있는 값의 범위는 훨씬 넓다. 이는 실수의 저장 방식이 부동 소수점, 즉 가수X밑^지수 의 형태로 저장하기 때문이다.
실수 자료형의 구성을 살펴보면
float 자료형에는 부호, 가수, 지수에 각각 1bit, 23bit, 8bit, double 자료형에는 각각 1bit, 52bit, 11bit를 할당한다.
실수 자료형의 구성
구분 | 부호 비트 | 가수 비트 | 지수 비트 |
---|---|---|---|
flaot(32bit) | 1 | 23 | 8 |
double(64bit) | 1 | 52 | 11 |
부동 소수점 표현 방식에서 지수는 표현할 수 있는 값의 범위에 영향을 미치는 요소, 가수는 값의 정밀도에 영향을 미치는 요소다. 일반적으로 float의 정밀도는 소수점 7자리, double의 정밀도는 소수점 15자리 정도다.
결과 : f1, d1만 정상 출력 f2, d2는 오차 발생