늦은 프로그래밍 이야기

기본 자료형의 메모리 크기와 데이터 표현 범위 본문

내일배움캠프/Java 기초

기본 자료형의 메모리 크기와 데이터 표현 범위

한정규 2022. 11. 17. 16:49

자료형 (Data type)

 - 해당 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야 하는지 명시적으로 알려주는 역할.


기본 타입 (Primitive Type)

 - 기본 타입은 모두 8종류가 제공되며, 크게 정수형, 실수형, 문자형, 논리형 타입으로 나눌 수 있다.

 

정수형 타입

 - 부호를 가지고 있고, 소수 부분이 없는 수.

 - 정수형 타입은 다음과 같다.

 1) byte

 2) short

 3) int (integer)

 4) long

 - 정수형 타입의 기본이 되는 타입은 int형이다. 따라서 int형의 데이터를 가장 빠르게 처리한다.

 

 - 메모리 크기, 데이터의 표현 범위

타입 메모리 크기 데이터의 표현 범위
byte 1바이트 -128 ~ 127
short 2바이트 -2^15 ~ (2^15 - 1)
-32,768 ~ 32,767
int 4바이트 -2^31 ~ (2^31 - 1)
-2,147,483,648 ~ 2,147,483,647
long 8바이트 -2^63 ~ (2^63 - 1)
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

 - 양수의 범위에 '0'이 포함되므로 양수의 범위가 1 좁다.

 

오버플로우 (Overflow)

 - 해당 타입이 표현할 수 있는 최대 범위보다 큰 수를 저장할 때 발생하는 현상.

byte num1 = 127;
num1++; // 127 + 1
System.out.println(num1); // -128

 - 표현 최대 범위를 넘어서면 오버플로우가 발생하여 잘못된 결과가 저장된다.

 

언더플로우 (Underflow)

 - 해당 타입이 표현할 수 있는 최소 범위보다 작은 수를 저장할 때 발생하는 현상.

byte num2 = -128;
num2--; // -128 - 1
System.out.println(num2); // 127

 - 표현 최소 범위를 넘어서면 언더플로우가 발생하여 잘못된 결과가 저장된다.


실수형 타입

 - 소수부나 지수부가 있는 수.

 - 정수보다 훨씬 더 넓은 표현 범위를 가진다.

 - 실수를 나타내는 타입은 다음과 같다.

 1) float

 2) double

 - 실수형 타입의 기본이 되는 타입은 double형이다.

 

 - 유효 자릿수

타입 지수의 길이 가수의 길이 유효 자릿수
float 8 비트 23 비트 소수 부분 6자리까지 오차없이 표현할 수 있음.
double 11 비트 52 비트 소수 부분 15자리까지 오차없이 표현할 수 있음.

 

 - 메모리 크기, 데이터 표현 범위

타입 메모리 크기 데이터 표현 범위 리터럴 타입 접미사
float 4바이트 (3.4 X 10^-38) ~ (3.4 X 10^38) F 또는 f
double 8바이트 (1.7 X 10^-308) ~ (1.7 X 10^308) D 또는 d (생략 가능)

문자형 타입

 - 정수 혹은 문자 하나를 표현할 수 있는 타입.

 - char

 - 유니코드(unicode)를 사용하여 문자를 표현.

 - 유니코드는 문자 하나를 16비트로 표현하므로, 총 65,536개의 문자를 표현할 수 있다.

 

 - 메모리 크기, 데이터 표현 범위

타입 메모리 크기 데이터 표현 범위
char 2 바이트 0 ~ 2^16 (65,536)

논리형 타입

 - 참(true)이나 거짓(false) 중 한가지 값만 가질 수 있는 boolean타입.

 - boolean

 - boolean 타입의 기본 값은 false이다.

타입 메모리 크기 데이터 표현 범위
boolean 1바이트 true 또는 false

'내일배움캠프 > Java 기초' 카테고리의 다른 글

타입 변환  (0) 2022.11.17
실수의 표현 방식  (0) 2022.11.17
컬렉션, 제네릭스  (0) 2022.11.16
객체지향 (3) 추상클래스, 인터페이스  (0) 2022.11.16
객체지향 (2) 상속, 접근제어자  (1) 2022.11.15
Comments