01. 자료형

자료형은 크게 정수형 자료형과 실수형 자료형으로 구분할 수 있다.

  1. 정수형 자료형
  2. 실수형 자료형



정수형 자료형

형식 이름 바이트 값의 범위
bool 1 false 또는 true
char 1 –128 ~ 127
short 2 -32,768 ~ 32,767
int 4 -2,147,483,648 ~ 2,147,483,647
long 4 -2,147,483,648 ~ 2,147,483,647
long long 8 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807


정수형 자료형에는 자료형의 이름 앞에 unsigned를 붙여서 양의 값의 범위만 갖는 자료형으로도 정의가 가능하다.

예를 들어, 다음과 같은 코드를 실행한다고 해보자.

int main()
{
	unsigned char uc = 200;
	char c = 200;

	return 0;
}

unsigned char 변수인 uc는 200이 그대로 들어가지만, char 변수인 c는 -56이 저장된다.

그 이유는 char c에 다음과 같은 순서로 값이 저장되기 때문이다.

    1. 200을 이진수로 변환, 메모리에 1100 1000을 저장.
    1. MSB로 부호 판별, 1이므로 음수 이진수 100 1000으로 읽음.
    1. 저장 결과 이진수 -100 1100 => 10진수 -56 이 됨.



실수형 자료형

형식 이름 바이트 값의 범위
float 4 3.4E +/- 38(7자리 숫자)
double 8 1.7E +/- 308(15자리 숫자)


실수형 자료형은 IEEE 표준 부동소수점 표현 체계를 따른다.

alt text


부동소수점 표현방식은 최상위 비트(MSB)는 부호를 표시하는데 사용되고, 이후 지수부분과 가수부분으로 이루어져있다.

어떤 실수를 2진수로 변환한 뒤, $1.m \times e^n$ 의 형태로 맞추면, $m$이 가수부분에 순서대로 할당되고 $n$이 2진수로 지수부분에 할당된다.

따라서, 실수 자료형은 정수 자료형과는 비트 저장 형태가 완전히 다르므로 연신 시 주의가 필요하다.

실수 자료형 중 float 변수는 대입하는 실수 뒤에 suffix를 붙여 대입한다.

float f = 3.14f;
double d = 3.14;