본문 바로가기
Programming/C, C++

LV1 C++ 데이터 형식(자료형) 종류와 범위

by Dev_카페인 2022. 9. 6.
반응형

 

 

[lv1/C++] 데이터 형식(자료형) 종류와 범위

개인용 컴퓨터가 귀하던 시절에는 저장용량이 매우 작아 프로그램 구현 시 사용되는 공간의 효율때문에 자료형의 크기가 매우 중요하였다. 하지만 현대 시대에서 컴퓨터의 저장용량이 기하급수적으로 증가함에 따라 프로그램 구현에서 자료형의 크기 중요도는 많이 낮아는데 그럼에도 불구하고 자료형은 가독성, 처리속도, 값의 범위, 효율성 등 여러가지 이유로 간과해서는 안될 부분이라고 생각한다.

 

우리는 항상 컴퓨터가 똑똑한다고 말하지만 컴퓨터는 0과 1밖에 모르는 멍청이 라는 것을 집고 넘어가야한다. 컴퓨터는  무수한 0과 1로 이루어진 데이터의 집합체이다. 0과 1을 표현할 수 있는 데이터의 최소 단위를 Bit(Binary Digit)라고 하고 8개의 Bit가 모여 1Byte로 표시된다. 1Byte(00000000)는 256개의 상태를 표현 할 수 있다. 고작 8개의 0과 1로 256개를 표시할 수 있다는 것이다. 여기에 1Byte가 더 있다면 얼마나 많은 상태를 표시할 수 있을까? 2Byte(00000000 00000000)로 표시할 수 있는 상태의 개수는 무려 65,536개다. 이진법을 배웠던 사람이라면 쉽게 이해될 것이다. 그렇다면 현실세계에서 표현되고 있는 자연수나 문자 등은 어떻게 표현되는지 알아보자.

 

C++에서는 정수, 실수, 문자, 참과 거짓 등을 표현할 수 있도록 데이터 지정 형식을 지원한다. 대표적으로 정수를 표현하는 자료형 int, 문자를 표현하는 char, 실수를 표현하는 float, 참과 거짓을 표현하는 bool 등 여러가지 형태들이 있으며 자료형들은 각각 차지하는 용량과 표현할 수 있는 값의 범위를 가지고 있다.

아래 이미지는 Microsoft Docs에서 가져온 데이터 형식이다.

c++ 자료형 데이터 형식 종류 범위
Microsoft Docs (https://docs.microsoft.com/ko-kr/cpp/cpp/data-type-ranges?view=msvc-170)

위에서 우리는 1Byte로 256가지의 표현이 가능하다는 것을 알았다. 1Byte의 대표적인 자료형은 char로 문자 표현을 담당하는데 (signed)char, signed char, unsigned char가 보이는데 값의 범위가 다르다는 것을 알 수 있다. 이들은 음수의 포함여부에 따라 signed와 unsigned로 표시되는데 대부분의 프로그래밍 언어에서 8Bit 중 제일 왼쪽 1Bit가 0이면 양수 1이면 음수로 표시되면서 부호 비트로 쓰이고 있다. 다른 자료형들도 마찬가지로 signed가 생략 되어 있거나 붙어있으면 제일 왼쪽에 있는 Bit가 부호비트로 쓰인다.

 

 

부울 형식 (bool)

bool 형식에는 true 또는 false의 값이 들어갈 수 있다.

문자 형식 (char)

대부분의 문자는 127번까지의 코드표가 있는 ASCII 코드표를 참조하여 값을 넣을 수 있다. 한글은 2byte가 필요하다.

음수는 표기되지 않거나 이상한 문자가 표시될 수 있다. 부호가 없는 char의 경우도 128이상은 표시되지 않을 수 있다.

부동 소수점 형식 (float, double, long double)

부동 소수점 형식은 IEEE-754 표현을 사용하여 광범위한 크기의 소수 자릿수 값을 근사값으로 제공한다.

정수 형식 (int, long, long long)

int의 경우 약 21억의 숫자를 표시할 수 있다. 코딩테스트 등 문제를 풀다보면 범위를 초과하는 문제가 많이 나오니 주의한다.

 

 

 

 

반응형

'Programming > C, C++' 카테고리의 다른 글

LV2 C++ 포인터(Pointer) 사용  (0) 2022.09.08
LV2 C++ 포인터 Pointer  (0) 2022.09.06
LV1 C++ 배열 Array 정리  (0) 2022.09.06
LV1 C++ 반복문 while, do - while  (0) 2022.09.02
LV1 C++ 반복문 for문  (0) 2022.09.02