💾 컴퓨터가 이해하는 정보 단위
💡 핵심 질문: 컴퓨터는 0과 1밖에 모르는데, 어떻게 숫자·문자·이미지·영상을 표현할까요? 모든 것은 정보 단위로부터 시작됩니다.
1. 가장 작은 단위 — 비트 (bit)
CPU는 0과 1만 이해할 수 있습니다. 이 0 또는 1 하나를 나타내는 가장 작은 정보 단위가 바로 비트(bit) 입니다.
비트가 늘어날수록 표현 가능한 정보의 수는 2의 거듭제곱으로 증가합니다.
| 비트 수 | 표현 가능한 경우의 수 | 예시 |
|---|---|---|
| 1 bit | 2¹ = 2가지 | 0, 1 |
| 2 bit | 2² = 4가지 | 00, 01, 10, 11 |
| 3 bit | 2³ = 8가지 | 000 ~ 111 |
| 8 bit | 2⁸ = 256가지 | 0 ~ 255 (1바이트) |
| 32 bit | 2³² = 약 43억가지 | int 범위 (-2,147,483,648 ~ 2,147,483,647) |
📐 공식: N비트 → 2ᴺ 가지 정보 표현 가능
0 → 0
1 → 1
↑ 1비트로는 딱 2가지
00 → 0
01 → 1
10 → 2
11 → 3
↑ 2비트로는 4가지
☕ Java 관점:
int는 32비트,long은 64비트입니다.int의 최대값이 약 21억인 이유가 바로 2³¹ - 1 이기 때문입니다. (1비트는 부호 표현에 사용)
2. 프로그램 관점의 정보 단위
비트는 너무 작은 단위입니다. 실제 프로그램은 수백만, 수십억 비트로 이루어져 있으므로 더 큰 단위가 필요합니다.
단위 체계
bit → byte → kB → MB → GB → TB
×8 ×1,000 ×1,000 ×1,000 ×1,000
| 단위 | 크기 | 실생활 감각 |
|---|---|---|
| 1 bit | 0 또는 1 하나 | 동전 앞/뒤 |
| 1 byte | 8 bit | 영문자 1글자 ('A' = 1byte) |
| 1 kB | 1,000 byte | 짧은 텍스트 파일 |
| 1 MB | 1,000 kB | MP3 음악 1곡 (약 3~5MB) |
| 1 GB | 1,000 MB | 영화 파일 1편 (약 1~4GB) |
| 1 TB | 1,000 GB | 일반 노트북 SSD 용량 |
📌 1,000 vs 1,024 엄밀히 말하면 두 가지 기준이 존재합니다.
표기 기준 예시 kB, MB, GB (SI 단위) × 1,000 제조사 스펙, 네트워크 속도 KiB, MiB, GiB (이진 단위) × 1,024 OS 파일 크기, 메모리 용량 500GB SSD를 사면 OS에서 465GB로 보이는 이유가 바로 이 차이 때문입니다.
☕ Java 관점: 기본 자료형의 크기도 모두 비트 단위로 정의되어 있습니다.
boolean // 1 bit (논리값) byte // 8 bit = 1 byte (-128 ~ 127) short // 16 bit = 2 byte int // 32 bit = 4 byte (-2^31 ~ 2^31-1) long // 64 bit = 8 byte float // 32 bit = 4 byte (부동소수점) double // 64 bit = 8 byte (부동소수점) char // 16 bit = 2 byte (유니코드)
Integer.MAX_VALUE가 2,147,483,647인 것,Long이 훨씬 큰 수를 담을 수 있는 것 — 모두 비트 수의 차이입니다.
3. CPU 관점의 정보 단위 — 워드 (word)
프로그램의 전체 크기를 표현할 때는 GB, MB를 쓰지만, CPU가 실제로 처리할 때는 전혀 다른 단위를 사용합니다.
워드(word)란?
CPU가 한 번의 연산 사이클에서 처리할 수 있는 데이터의 크기
2GB 프로그램이 있어도 CPU는 한 번에 2GB를 처리하지 않습니다.
워드 크기만큼 잘라서 읽고, 처리하고, 또 읽고, 처리하고... 반복합니다.
워드 크기와 CPU 세대
| CPU 세대 | 워드 크기 | 표현 가능 메모리 주소 |
|---|---|---|
| 구형 CPU | 16 bit | 64 KB |
| 32비트 CPU | 32 bit | 최대 4 GB |
| 현대 CPU (주류) | 64 bit | 최대 16 EB (사실상 무제한) |
💡 왜 32비트 OS에서 RAM을 4GB 이상 못 쓸까요? 32비트 워드로 표현할 수 있는 메모리 주소가 최대 2³² = 4,294,967,296 (약 4GB)이기 때문입니다. 64비트 OS로 넘어오면서 이 한계가 사라졌습니다.
☕ Java 관점: JVM도 32비트/64비트 버전이 따로 존재했습니다. 64비트 JVM에서는 객체 참조(reference)의 크기가 기본 64비트이지만, JVM의 Compressed OOPs(Ordinary Object Pointers) 옵션으로 32비트처럼 압축하여 메모리를 절약하는 최적화를 수행합니다.
4. 핵심 요약
정보 단위 계층 구조
bit (0 또는 1)
↓ × 8
byte (8 bit) ← 문자 1개, Java boolean/byte의 기본 단위
↓ × 1,000
kB → MB → GB → TB ← 파일/메모리/저장장치 용량 표현
word ← CPU가 한 번에 처리하는 단위 (현대 = 64 bit)
| 단위 | 관점 | 핵심 포인트 |
|---|---|---|
| bit | 물리적 | 0 또는 1, 모든 정보의 최소 단위 |
| byte | 프로그램 | 8 bit, 문자 1개의 기본 단위 |
| kB ~ TB | 프로그램 | 파일·메모리 크기 표현 |
| word | CPU | CPU가 한 번에 처리하는 크기 (현대: 64 bit) |