본문 바로가기

C언어

C언어 공부 - 자료형 (메모리, 자료형 종류)

반응형

 

 

안녕하세요. 

D.U.T입니다.

클릭 & 방문해주셔서 감사합니다.

 

유튜브를 보다가 유익한 말이 있어 기록을 남깁니다. 

'시장의 공급과 수요가 내 연봉을 결정한다'

 

이 말을 듣고 프로그래밍 공부를 결심했습니다.

 

 

C언어 공부를 시작했고 공부한 내용을 정리하는 포스팅입니다. 

부족한 부분이 있을 수 있으니 참고하시기 바랍니다. 

 

 


■ 메모리(RAM)는 데이터(정보)를 저장하는 공간

※ 메모리(RAM: Random Access Memory)는 무엇인가?

우리가 일반적으로 컴퓨터에서 사용하고 있는 메모리로 부르는 것이 램(RAM)이다. 

전원이 계속 공급되는 경우에는 정보가 기록되지만 전원이 끊기면 기록되는 정보는 없어진다. 

그래서 휘발성 메모리(Volatile Memory)라고 한다. 

 

( RAM: Random Access Memory ) 14631677 @Pixabay

 

램(RAM)컴퓨터 주기억장치, 응용 프로그램 일시적 로딩, 데이터 일시적 저장 등에 사용된다.

 

RAM의 종류에는 DRAM, SRAM이 있다. 

DRAM은 우리에게 익숙한 컴퓨터 메모리, DDR3, DDR4 등에 사용된다.

SRAM은 FPGA(Field Programmable Gate Array) 등에 사용된다. 

 


● 윈도우(Windows) 운영체제(Operating System)

운영체제(OS)마다 메모리 주소를 관리하는 방법은 다르다. 

윈도우 (Windows) 운영체제
32비트(Bit) 2의 32승 = 0 ~ 4,294,967,295번지
64비트(Bit) 2의 64승 = 0 ~ 18,446,744,073,709,551,615번지

옛날에는 32비트(Bit) 운영체제를 많이 사용했다. 현재는 대부분 64비트(Bit) 운영체제를 사용한다.

그 이유는 메모리 용량 때문이다. 32비트 운영체제는 최대 메모리 용량을 4GB까지만 사용했다. 

 

※ 왜 메모리 용량을 4GB까지만 사용할수 있었을까? 

1비트(Bit)부터 이해해보자. 

1비트0 or 1을 저장할 수 있다. 

1비트
0 1

 

2비트는 1비트 2개가 모여 이루어진다. 

2비트 10진수
0 0 = 0
0 1 = 1
1 0 = 2
1 1 = 3

즉, 1비트 증가할 때 마다 저장 단위는 2배로 늘어난다. 

 

1바이트
(Byte)
1비트 1비트 1비트 1비트 1비트 1비트 1비트 1비트
8비트 =  0 or 1 0 or 1 0 or 1 0 or 1 0 or 1 0 or 1 0 or 1 0 or 1

8비트(Bit)는 1바이트(Byte)이다. 

8 Bit = 1 Byte

8비트는 2의8승이므로 256이다. 주소 번지는 0부터 시작하므로 0 ~ 255 중 하나를 저장할 수 있는 크기이다. 

 

메모리 단위
1,024 Byte = 1KB (킬로바이트)
1,024 KB = 1MB (메가바이트)
1,024 MB = 1GB (기가바이트)
1,024 GB = 1TB (테라바이트)
1,024 TB = 1PB (페타바이트)
1,024 PB = 1EB (엑사바이트)
1,024 EB = 1ZB (제타바이트)
1,024 ZB = 1YB (요타바이트)

2의10승은 1,024이므로 2의10승으로 곱해질 때마다 단위가 바뀐다. 

 

32비트(Bit) 운영체제는 위에서 봤듯이 주소 번지는 2의32승 개수이다.

저장 공간 크기 비트 단위 환산 저장할 수 있는 숫자의 개수 
4바이트 (Byte)  32비트 (Bit) 4,294,967,296개 (=2^32)

 

지수 곰셈을 이용해 풀어보면 아래와 같다.

 

 

1,024 Byte는 1KB이므로 2^10이 3번 곱해지므로 1GB이다. 즉, 2의32승 = 4GB 이다. 

그러므로 32비트 운영체제는 메모리 주소 번지를 4GB까지만 사용 가능하다. 

그러나 실제로 32비트 윈도우에서는 메모리를 3.25GB까지만 인식한다. 내가 알고 있는 범위안에서 기록하자면 윈도우에서 자체적으로 제한했던걸로 기억한다. 

 

그러면 현재 64비트 운영체제는 메모리 용량을 어디까지 사용할 수 있을까? 

저장 공간 크기 비트 단위 환산 저장할 수 있는 숫자의 개수 
8바이트 (Byte)  64비트 (Bit) 18,446,744,073,709,551,616개 (=2^64)

 

 

위와 똑같이 계산을 해보면 2의10승이 6번 곱해지므로 1EB(엑사바이트)이다. 즉, 2의64승 = 16EB이다. 

그러므로 64비트 운영체제는 메모리 주소 번지를 16EB까지 사용할 수 있다. 그러나 이것은 계산적인 이론값이며 실제 윈도우 10 경우에는 2TB까지만 지원되는 것으로 알고 있다. 

 

 

 


● 부호비트는 양수와 음수를 구별!

양수와 음수를 구별하는 비트를 부호 비트라고 한다. 

1바이트
(Byte)
부호 1비트 1비트 1비트 1비트 1비트 1비트 1비트 1비트
8비트 =  0: 양수
1: 음수
0 or 1 0 or 1 0 or 1 0 or 1 0 or 1 0 or 1 0 or 1

첫 번째 비트에서 0일 경우, 양수이다. 1일 경우에는 음수이다. 

 

7비트를 사용하므로 데이터를 저장할 수 있는 수는 2의 7승인 128이다. 

7비트 양수일 경우 0을 포함하여 ~ 127까지 128개 중 하나를 저장할 수 있다. 

음수일 경우 -128 ~ -1까지 동일하게 128개 중 하나를 저장할 수 있다. 

 

예시)

양수 비트 최대값 = 127

1바이트
(Byte)
부호 1비트 1비트 1비트 1비트 1비트 1비트 1비트 1비트
127 =  0 (양수) 1 1 1 1 1 1 1

 

음수 비트 최대값 = -1

1바이트
(Byte)
부호 1비트 1비트 1비트 1비트 1비트 1비트 1비트 1비트
-1 =  1 (음수) 1 1 1 1 1 1 1

 

음수 비트 최소값 = -1

1바이트
(Byte)
부호 1비트 1비트 1비트 1비트 1비트 1비트 1비트 1비트
-128 =  1 (음수) 0 0 0 0 0 0 0

 

 

 


■ 자료형(Data Type)의 종류

메모리는 1바이트(Byte) 단위로 주소가 부여된다. 하지만, 데이터를 저장하거나 읽을 경우 꼭 1바이트 단위로 항상 사용해도 되는것은 아니다. 데이터 크기에 맞춰 알맞은 메모리를 할당해서 사용하면 된다. 

 

▶정수 자료형

1. signed char 

- 부호가 있는 1바이트(1Byte = 8Bit) 크기의 자료형

- 부호가 있으므로 첫 번째 비트는 부호 비트

- 실제 사용할 수 있는 비트는 7비트이므로 저장할 수 있는 크기는 -128 ~ 127

 

2. unsigned char 

- 부호가 없는 1바이트(1Byte = 8Bit) 크기의 자료형

- 8비트를 모두 사용할 수 있으므로 저장할 수 있는 크기는 0 ~ 255

 

3. signed short int

- 부호가 있는 2바이트(2Byte = 16Bit) 크기의 자료형

- 부호가 있으므로 첫 번째 비트는 부호 비트

- 실제 사용할 수 있는 비트는 15비트이므로 크기는 2의 15승인 32,768

- 부호 비트가 0이면 저장할 수 있는 크기는 0 ~ 32,767

- 부호 비트가 1이면 저장할 수 있는 크기는 -32,768 ~ -1

 

4. unsigned short int

- 부호가없는 2바이트(2Byte = 16Bit) 크기의 자료형

- 16비트를 모두 사용할 수 있으므로 저장할 수 있는 크기는 0 ~ 65,535

 

5. signed long int

- 부호가 있는 4바이트(4Byte = 32Bit) 크기의 자료형

- 부호가 있으므로 첫 번째 비트는 부호 비트

- 실제 사용할 수 있는 비트는 31비트이므로 크기는 2의 31승인 2,147,483,648

- 부호 비트가 0이면 저장할 수 있는 크기는 0 ~ 2,147,483,647

- 부호 비트가 1이면 저장할 수 있는 크기는 -2,147,483,648 ~ -1

 

5. unsigned long int

- 부호가없는 4바이트(4Byte = 32Bit) 크기의 자료형

- 32비트를 모두 사용할 수 있으므로 저장할 수 있는 크기는 0 ~ 4,294,967,295

 


 

※ 정수 자료형은 생략한 형태로 사용할 수 있음 

기본 형태 생략하고 자주 쓰는 형태 
signed short int -> short
unsigned short int -> unsigned short
signed  long int -> int
unsigned long int -> unsigned int

참고로 위와 같이 생략하는 경우는 32비트 OS 기준!

 

 

 


 

공부한 내용을 계속해서 업데이트할 예정입니다.

 

감사합니다. 

반응형

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

C언어 공부 - 상수와 변수  (0) 2022.05.08
C언어 공부 - 프로그래밍 기초  (0) 2022.03.03