아이티-잉

공부하며 정리하는 IT블로그

Today   Total  
2023년! 복 많이 받으세요

자료형(Data Type)의 종류와 표현범위

2016. 4. 19. 21:58

자료형(Data Type)

 

 

영문 그대로 데이터 타입이라고도 읽는다.

자료형은 데이터 값의 형태를 미리 지정함으로써, 메모리에 공간을 확보하고 데이터 간 연산을 용이하게 한다.

 

예컨대, 상자라는 자료형과 건물과 책이라는 데이터가 있다고 가정하자.

이러한 경우, 상자에 건물을 넣을 수 없으나 책은 담을 수 있을 것이다.

 

즉, 자료형은 데이터를 담아 연산을 가능하게하고 담긴 데이터 형태도 가늠할 수 있게 한다.

 

 

종류

 

자료형의 종류는 프로그래밍 언어마다 다를 수 있으나,

일반적으로 크게 5가지 형태가 있다.

 

*시작에 앞서 참고로 1바이트(byte)는 8비트(bit)에 해당한다.

 

 


~ 광고 타임 ~


 

 

1) 불린(Boolean) / 키워드 : bool(c/c++), boolean(java)

 

부울 대수, 불 대수라고도 하며, 0과 1을 담을 수 있는 대체로 1byte 크기를 가진다.

여기서 0은 거짓(false), 1은 참(ture)에 대응된다.

 

C/C++ 코드 예)

bool value = 0;  if(value){     printf("TRUE"); }else{     printf("FALSE"); } 

 

위 코드에서 bool 자료형을 갖는 'value'이름의 변수에 '0'을 대입했다.

그리고 조건문(if)에서 조건식안에 value는 0을 가졌으므로 false가 된다.

 

이를 실행하면 FALSE를 확인할 수 있다.

 

 

 

2) 문자형(Character) / 키워드 char

 

캐릭터 형이라고도 하며, 문자 하나를 담을 수 있는 1byte(8bit) 크기를 갖는다.

때문에 표현 가능범위는 0부터 127까지 총 가짓수는 128개가 된다.

 

즉, 컴퓨터는 문자인지 숫자인지 모르기때문에 숫자로도 담을 수 있다.

 

JAVA 코드 예)

char ch = 65; 	System.out.println(ch); 

 

결과)

 

 

그런데 위와 같이 65가 대문자 A로 자동 변환된 것을 볼 수 있다.

바로 아스키(ASCII) 코드 내에서 정수 '65'에 대응되는 값이 대문자 'A'이기 때문이다.

 

만약 숫자 그대로 출력하고 싶다면, 자바에선 Integer 클래스를 사용할 수 있다.

System.out.println(Integer.toString(ch)); 

여기서 toString은 숫자를 문자열로 변환해주는 역할을 하는 메소드다.

 

 

위 코드는 자바를 예로 들었는데, C/C++에서 살펴보면 다음과 같다.

 

C/C++ 코드 예)

char ch = 65;  printf("정수 : %d, 문자 : %c", ch, ch); 

 

변환문자(치환문자 또는 서식문자) %d는 decimal의 약자로, 10진수 형태로 변환해준다.

%c는 짐작했겠지만 character의 약자이며, 문자로 변환해준다.

 

 

 


~ 광고 타임 ~


 

 

 

3) 정수형(Integer)

 

정수를 담을 수 있는 자료형이며, 인티저(Integer) 또는 줄여서 인트(Int)라고 말하기도 한다.

이는 크게 세종류로 나눌 수 있다.

 

3-1) 숏(Short) / 키워드 short

 

숏 인트(Short Int), 숏 인티져(Short Integer)의 자료형이며, 2byte(16bit) 크기의 정수를 할당할 수 있다.

정수는 음의 정수와 양의 정수가 있으므로, 표현가능 범위는 0을 포함한 -32,768 ~ +32,767 까지 총 65,536 가지다.

 

3-2) 인트(Int) / 키워드 int

 

인트형은 컴파일러나 운영체제에 따라 메모리 할당 크기가 다를 수 있다.

일반적으로는 4byte(32bit)에 해당한다. 이는 -2,147,483,648 ~ +2,147,438,647 까지 총 4,294,922,296 가지다.

 

만약, 크기가 궁금하다면 sizeof(int) 함수를 호출하여 byte단위의 값을 확인할 수 있다.

 

3-3) 롱(Long) / 키워드 long

 

롱 인트(Long Int), 롱 인티저(Long Integer)의 자료형이며, 4byte(32bit) 크기의 정수를 담을 수 있다.

인트형과 마찬가지로 4byte(32bit)의 크기를 할당한다.

 

 

+) 부호의 유무

 

앞서 정수형은 음수와 양수가 있다고 했다.

이를 음의정수 전용 또는 양의정수 전용 자료형으로도 선언할 수 있다.

 

접두사로 unsigned가 붙게되면 양의 정수만 표현가능해진다.

 

이는 문자형에도 해당된다.

 

 

 

4) 부동소수점(Floating point number)

 

이는 실수를 표현할 때, 자연수와 소수점 아래 밑수,

그리고 지수에 해당하는 유효숫자로 나누어 표현하는 방식이다.

 

예를들어, 3.14를 3 x 10^-2 로 풀이하는 것과 같다.

결과적으로 소수를 담아야할 때 사용하면 된다.

 

4-1) 플로트(Float) / 키워드 : float

 

4byte(32bit) 크기의 공간을 사용하며, 표현 범위는 1.2Ε^-38 ~ 3.4Ε^38 까지다.

참고로 Ε는 로마자 Ε(엡실론; Epsilon)이며, 알파벳 e로 표기하기도 한다. 

여기서 Ε의 의미는 밑이 10인 자연로그를 뜻한다.

 

 

4-2) 더블(Double) / 키워드 : double

 

8byte(64bit) 크기의 메모리를 할당하고, 표현가능 범위는 2.2Ε^308 ~ 1.8E^308 까지다.

쉽게 말하면 좀더 큰 실수값을 저장할 때 사용한다.

 

 

JAVA 코드 예)

float fi = (float) 3.141592; System.out.format("%.2f", fi); 

변환문자 %.2f 에서 .은 소수점을 의미하고 숫자 2는 소수점 이하 둘째 자리까지 출력하겠다는 의미다.

그리고 f는 float 자료형을 나타내므로, 3.14만 출력된다. 이는 반올림을 적용한다.

 

 

결과)

 

 

 

 


~ 광고 타임 ~


 

 

5) 문자열(String) / 키워드 : string

 

문자를 나열한 것을 문자열이라 한다. 즉, 공백을 포함한 둘 이상의 문자로 이루어지면 문자열에 해당한다.

사실 자료형이라고 보기 어려울 수 있지만, 문자열의 활용도가 높으므로 적어본다.

 

자바에서는 별도로 string 객체가 존재하므로 여느 자료형처럼 이용할 수 있다.

하지만 C나 C++에서는 별도로 존재하지 않아서 직접 메모리 공간을 잡아줘야한다.

 

메모리 공간은 정적 또는 동적으로 할당할 수 있으며,

보다 자세한 내용은 차후 C/C++ 카테고리에서 다루도록 하겠다.

 

 

 

요약

 

구분 키워드(예약어) 메모리 크기
JAVA C/C++ 
부울 대수  boolean  bool  1byte(8bit)
문자형  char  1byte(8bit)
정수형  short  2byte(16bit)
 int  4byte(32bit)
 long  4byte(32bit)
부호  접두사 unsigned  자료형에 따름
실수형  float  4byte(32bit)
 double  8byte(64bit)
문자열  string  없음  동적/정적 할당

 

 

 

마치며

 

간단한 내용인데 풀어쓰다보니 길어졌다.

 

앞서 스택과 큐를 설명하며 오버플로우와 언더플로우에 대해 잠시 짚고 넘어간 적이 있는데,

다음 자료구조 포스팅에서는 이들과 형변환(캐스팅; Casting)에 대해 살펴보겠다.

 

 

끝.