자료형(Data Type)

Developer_Crow·2022년 9월 15일
1

Computer Science

목록 보기
1/3
Data Structure 파트의 내용들은 나라심하 카루만치 저 다양한 예제로 학습하는 데이터 구조와 알고리즘과
KOCW에서 무료로 제공되는 강의들의 내용을 정리한 글입니다.

세상에는 많은 데이터가 있다.
뭐 키, 나이, 온도 등등..

이 많은 데이터들을 컴퓨터는 한 가지의 형식으로 저장하지 못한다.
그래서 이 데이터의 형식들을 분류한 것을 Data Type이라고 부른다.

1. 자료의 형

데이터 타입에는 여러가지가 있지만 시스템 정의 데이터(Primitive Data Type), 사용자 정의 데이터(User-Defined Data Type)으로 나뉜다.

Primitive Data Type이란, 시스템이 기본적으로 정해둔 데이터 형이라는 것이다.
대표적으로 const, int, float, double... 뭐 등등 많을 것이다.

User-Defined Data Type이란, 상술한 시스템이 정한 데이터 타입이 아닌 사용자(개발자)가 정의한 데이터 형이다.
대표적으로 C에서의 struct, C++ class 같은 것들이 있다.

각 데이터 형에 따라 할당된 비트수는 컴파일러, 운영체제에 따라 다르다.

그 이유는 컴퓨터가 2022년에 갑자기 나타난 것이 아닌 디지털 컴퓨터는 20세기부터 천천히 발전해 온 것으로 당시의 컴퓨터는 사용 가능한 메모리 용량이 매우 작았다.

예시를 들자면 예전의 int는 2Byte였다. 하지만 현재의 int는 대체로 4Byte까지 표현 가능한데, 이로써 생기는 문제가 있다. 바로 버퍼 오버플로다(Buffer Overflow).

버퍼 오버플로(Buffer Overflow)가 왜 문제냐면 데이터를 임시 저장한 버퍼가 넘쳐도 컴파일러는 인식하지 못한다는 것이 문제인 것이다.
C나 C++에서 예전에 쓰던 2Byte짜리 정수 표현인 short을 사용하여 32,000에 +1000을 하여 출력하여 보면 알 수 있다.

#include <stdio.h>

int main() {
	short a = 32000; //표현 가능한 데이터 수는 (2^데이터 형의 비트 수)이다.
	printf("2Byte 정수 표현 : %d", a+1000);
    return 0;
}

이러한 자료 구조를 공부하지 못한 초보 개발자는 일반적인 사칙연산 구현에서부터 난항에 빠질 수도 있다

User-Defined Data Type에는 배열, 리스트, 큐, 스택, 그래프, 트리 등등이 있다.

2. 자료의 구조

자료의 구조에는 크게 선형 구조(Linear)와 비선형 구조(Non Linear)가 있는데, 선형 구조의 대표적 예는 배열이 있으며, 비선형 구조의 대표적 예는 트리가 있다.

선형 구조는 자료를 구성하는 데이터가 순차적으로 나열된 구조이며

비선형 구조는 하나의 자료 안에 또 다른 자료가 들어있을 수 있는 구조를 말한다.

3. 추상적 데이터 형

추상적 데이터 형은 구현은 생각하지 않고 데이터들의 연산을 생각한 것이다. 예시로 스택(Stack)의 LIFO(Last in First out), 큐(Queue)의 FIFO(Firts in First out)이 있다.
이건 자료 구조와 다르다는 의견이 많은데 데이터의 형식을 서술하다보니 추상 데이터형에 대해서도 서술하게 되었다.

0개의 댓글