C언어

[C언어 #1][기본 자료형]

Sim 2024. 3. 8. 22:44
반응형

 

 

 

C언어를 공부하다 보니 기본 자료형의 크기와 값의 표현 범위가 중요하다는 생각을 하게 되었습니다.

특히 자료구조와 알고리즘을 공부하면서 기본 자료형에 대한 중요성을 체감하게 되는 것 같습니다.

일반적인 순서대로 공부를 진행하지는 않을 것 같지만 최대한 중요한 내용을 포함할 계획입니다.

 

 


 

 

기본 자료형의 종류와 데이터의 표현범위

 

 

 

C언어의 표준을 정하는 ANSI에서는 "short와 int는 최소 2바이트이되, int는 short와 크기가 같거나 더 커야 한다."

정도로만 자료형의 크기를 표준화하고 있습니다. 즉, 자료형 별 크기를 정확히 제한하고 있지 않으며,

컴파일러마다 차이를 보일 수 있다는 것입니다. 물론 큰 차이는 아니고 약간의 차이라는 것을 알고 있어야 합니다.

 

자료형 크기 값의 표현 범위
정수형 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이하
실수형 float 4바이트 $\pm 3.4*10^{-37}$이상 $\pm3.4*10^{+38}$
double 8바이트 $\pm 1.7*10^{-307}$이상 $\pm 1.7*10^{+308}$이하
long double 8바이트 이상 double 이상의 표현범위

 

여기에 추가적으로 Unsigned 정수 자료형이라는 것이 있습니다.

이 자료형은 양의 정수값만을 표현하며 음수를 표현하지 않습니다.

unsigned 정수 자료형은 일반적으로 큰 양의 정수값을 저장할 때 사용되며,

비트 연산이나 비트 단위 조작에 유용합니다.

 

자료형 키워드 메모리 크기 값의 범위
부호없는 문자형 unsigned char 1 Bytes 0 ~ 255
부호없는 정수형 unsigned short 2 Bytes 0 ~ 65,535
unsigned int 4 Bytes 0 ~ 4,294, 967, 295
unsigned long 4 Bytes 0 ~ 4,294, 967, 295

 

 

unsigned자료형과 signed자료형이라는 두 가지의 자료형이 있습니다.

두 자료형은 부호여부, 비트 표현 방식, 표현 가능한 값에 대해서 서로 차이점이 있습니다.

 

  • 부호 여부

1. signed자료형은 양수, 음수, 그리고 0까지를 표현할 수 있습니다.

 

2. unsigned 자료형은 오직 양수와 0만을 표현할 수 있습니다. 음수는 표현하지 못합니다.

 

  • 비트 표현 방식

1. signed자료형은 가장 왼쪽 비트를 부호 비트로 사용합니다. 이 비트가 0이면 양수를 나타내고, 1이면 음수를 나타냅니다.

 

2. unsigned 자료형은 모든 비트를 값의 표현에 사용합니다. 즉, 모든 비트가 값에 기여합니다.

 

  • 표현 가능한 값의 범위

1. signed 자료형은 양수, 음수, 0까지를 표현해야 하므로 그 범위는 대개 음수의 절댓값이 양수의 절댓값보다 하나 작습니다.

예를 들어, 8비트 signed char의 경우, 범위는 -128 ~ 127입니다.

 

2. unsigned 자료형은 양수와 0만을 표현하므로 음수가 없습니다. 따라서 signed 자료형보다 큰 양수 값까지 표현할 수 있습니다.

예를 들어 8비트 unsigned char의 경우 범위는 0 ~ 255 입니다.

 

 

 

 

지금까지 기본 자료형에 대해서 살펴봤습니다. 자료형을 보다 보면 비트와 바이트에 대해서

나오는 것을 보실 수 있습니다.  비트와 바이트에 대해서 잘 아시는 분들도 있지만 저는 처음에 공부했을 때,

비트와 바이트의 단위에 대해서 잘 몰랐기 때문에 비트와 바이트의 단위에 대해서 간단하게 알아보고 넘어가 보도록 하겠습니다.

 

 

 

 

 

 

비트와 바이트의 단위

 

 

 

비트(bit, binary digit)는 하나의 비트는 0이나 1의 값을 가질 수 있습니다.

바이트는 비트가 여러 개 모인 것입니다. 바이트를 찾다 보니 재미있는 사실이 있었습니다.

공부할 당시에 '옥텟'이라는 말을 처음 보게 되어 찾아봤을 때, 8개의 비트가 한데 모인 것을 옥텟이라고 했습니다.

초기 컴퓨터는 1바이트가 꼭 8비트 만을 의미하지 않았기 때문에 8비트를 명확하게 정의하기 위해서 옥텟이라는

말이 사용되었지만, 요즘에는 바이트하고 같은 의미가 되어버려 옥텟은 더 이상 일반적으로 사용되지 않고 바이트가

사용되었다고 합니다. 가끔 공부를 하다 보면 알지 못했던 역사들도 같이 알게 되는 것 같아서 재미있다는 생각을 하고는 합니다.

 

본론으로 돌아와서 바이트가 8비트를 4비트는 니블을 그리고 두 바이트는 일부에서는 워드(word)라고 합니다.

 

이름 표현법
비트 -
바이트 1 Bit = 8 Byte
킬로 비트 / 바이트 $10^{3}$ / 1KB = 1000Bytes
메가 비트 / 바이트 $10^{6}$ / 1MB = 1000KB
기가 비트 / 바이트 $10^{9}$ / 1GB = 1000MB
테라 비트 / 바이트 $10^{12}$ / 1TB = 1000GB
페타 비트 / 바이트 $10^{15}$ / 1PB = 1000TB
엑사 비트 / 바이트 $10^{18}$ / 1EB = 1000PB
제타 비트 / 바이트 $10^{21}$ / 1ZB = 1000EB
요타 비트 / 바이트 $10^{24}$ / 1YB = 1000ZB

 

 


 

지금까지 기본 자료형과 비트와 바이트에 대한 개념을 살펴봤습니다.

C언어를 통해서 자료구조와 알고리즘 수업을 듣다 보니 기본자료형과 비트 그리고 바이트에

대해서는 머릿속에 각인이 되어있어야 하는 기본적인 것이라는 생각이 들어서 정리해 보게 되었습니다.

 

다음에는 아무래도 C언어에서 핵심인 Pointer(포인터)에 대해서 배워보도록 하겠습니다.

 

감사합니다.

반응형

'C언어' 카테고리의 다른 글

[C언어 #2][포인터 #1]  (0) 2024.03.11