경일게임아카데미 멀티 디바이스 메타버스 플랫폼 개발자 양성과정 2022/04/04~2022/12/13 1. 변수의 자료형(데이터 타입)

1. 변수의 자료형(데이터 타입)

변수의 자료형이란 변수를 선언할 때, 이 변수가 어떤 자료의 형태를 나타내는지 설명해주는 것을 의미한다. C++은 엄격한(strict) 언어라서, 변수를 하나 선언할 때도 자료형을 명확히 밝히고 사용해야 한다. 그러기 위해서는 변수의 특성부터 잘 파악하는 것이 우선이라고 생각한다.

변수의 특성

변수의 특성은 다음의 4가지 이다.

1) 이름

2) 값

3) 크기

4) 메모리 주소

이와 같은 특성을, 특히 값의 종류와 그 크기를 고려하여 변수의 자료형을 고르게 된다.

자료형의 종류

자료형은 그 값의 종류에 따라 다음과 같이 종류가 나누어진다.

1) 불형 (bool 등)

2) 정수형 (int 등)

3) 실수형 (float, double 등)

4) 문자형 (char 등)

5) 문자열 (string 등)

이처럼 나뉘는 이유는, 그 자료의 형태에 따라 데이터 처리 방식이 달라지기 때문이다. 또한, 같은 형태임에도 또다른 자료형이 있는 것은 한정된 용량을 유효 활용하기 위함이라 할 수 있다.

불형

불형은 참, 거짓만을 값으로 받는 자료형이며, 그렇기에 그 크기도 1Byte로 매우 작다. 0과 1로 이루어진, 논리 판단을 위한 변수에 사용하기 좋다. 대표적으로 bool 등이 있다.

정수형

정수형은 정수(-1, 0, 1 등)를 양과 음을 가리지 않고 값으로 받는 자료형이다. 그 부호는 맨 앞 bit(MSB: most significant bit, 최상위 부호 비트)가 0인가 1인가에 따라서, 0이면 양수, 1이면 음수로 분간한다. unsigned양의 정수만을 받도록 한정할 수 있으며, 그 경우 값의 범위는 2배 가까이 변한다. 예를 들어, 정수형 char의 크기는 1Byte이고, 이는 -128 ~ 127의 범위의 정수이다. 이는 bit로 표현하면 다음과 같다.

	1 = 0000 0001	 127 = 0111 1111	0 = 0000 0000
   -1 = 1111 1111	-127 = 1000 0001 -128 = 1000 0000

컴퓨터에서의 빼기는 기본적으로 음수의 덧셈이기에, 어떤 것을 더했을 때 0 (0000 0000 OR 1 0000 0000)이 되는가에 따라 음수를 정한다.
그리고 unsigned char의 범위는 0 ~ 255로 변한다. (2^8 = 256)
정수형에는 대표적으로 int, bool, short, long, __int8 등이 있다.

실수형

실수형은 말 그대로 실수를 값으로 받는 자료형으로, 다만 정수형처럼 데이터를 처리한다면 0과 1 사이에도 수없이 많은 값이 있는 실수를 모두 담기에는 컴퓨터의 용량이 턱없이 부족하다. 그렇기에, 컴퓨터에서는 부동소수점 방식으로 실수를 표현한다.

- 부동소수점

부동소수점 방식이란 실수를 컴퓨터에서 근사하여 표현할 때, 소수점의 위치를 정하지 않고 그 위치를 정밀도에 따라 별개로 기록하는 것이다. 32비트 컴퓨터를 기준으로, 실수형은 1비트의 부호부, 8비트의 지수부, 23비트의 가수부로 나누어 나타낸다.
-부호부 (1비트) : 양수일 때는 0, 음수일 때는 1
-지수부 (부호가 없는 정수, 8비트) : 8비트로 표시
-정규화된 가수부 (부호가 없는 정수, 23비트) : 제일 앞의 비트는 정규화되었으므로 1이다.


출처: 부동소수점 위키백과

예를 들어, 십진수 21.8125를 정규화된 이진수로 나타낸다고 해보자. 21.8125 = 10101.1101이며, 이를 정규화하면

0.101011101×2^5

이다. 지수의 5를 이진법으로 바꾸면 101이다. 따라서 32비트 정규화된 부동소수점수로 나타낸다면 맨 앞 비트의 부호는 0(양)이고, 지수부 부호는 0(양)이며, 지수부 나머지 6개 비트는 000101, 가수부는 101011101000…이 된다. 이것을 결합하면

0000001011010111010000000000000000

가 된다. 이런 부동소수점 방식을 쓰는 실수형은 대표적으로 float, double 등이 있으며, C++에서는 실수의 디폴트 자료형은 double이므로 float으로 선언할 때는 아래와 같이

float f = 21.8125f
float f = (float) 21.8125;

로, f를 수의 뒤에 붙이는 등의 방법으로 float으로 선언함을 명시해야 한다.
참고로, float은 소수점 아래 7자리, double은 소수점 아래 15자리까지 사용할 수 있다.

문자형

문자형은 정수형으로 주어진 수를 다음과 같은 ASCII 코드표에 대입하여, 정해진 글자를 불러내는 자료형이다.

출처: https://shaeod.tistory.com/228

대표적으로 char 등이 있다.

문자열

문자열은 보통 문자형의 배열로써 값을 저장하지만, <string>의 헤더 파일을 사용하는 것으로 string이라는 문자열의 자료형을 사용하는 것이 가능하다. 그 크기는 고정되지 않고, "문장"을 큰따옴표 안을 읽어내는 것으로 저장한다. 그 대표 예는 앞써 말했듯이 string이 있다.

#include <string>
 string str = "문장"

전체

다음은 32비트를 기준으로 한 자료형의 크기 및 범위이다. 다른 OS(16비트, 64비트)나 컴파일러에서는 자료형의 크기가 조금씩 달라질 수 있다.

출처: https://myblog.opendocs.co.kr/archives/1230

좋은 웹페이지 즐겨찾기