CSAPP 9장 기초 정리 | 비트·바이트·주소 공간 이해하기

맹쥐·2025년 4월 25일

공부를 하다 보면 정말 기본적인 개념에서 문득 막히는 순간이 온다.
나에겐 그게 바로 바이트, 비트, 주소였다.

특히 CS:APP 9장 가상 메모리(Virtual Memory)를 공부하면서
비트/바이트/주소에 대해 머릿속이 복잡해졌다.

그래서 나처럼 헷갈릴 수 있는 사람들을 위해 간단히 정리해보았다.

비트(Bit)와 바이트(Byte)의 기본 개념

단위 의미

  • 1bit 0 또는 1 → 이진수 한 자리
  • 1byte = 8비트 → 일반적으로 데이터를 저장하는 최소 단위
1 Byte = 8 bits  
예: 10101010 (8자리)
  • 컴퓨터 메모리는 데이터를 1byte 단위로 나누어 저장한다.

예: char 1바이트, int 4바이트 (32비트), …

메모리 주소도 바이트 단위로 할당된다.

  • 위 그림에서 각 가로줄 하나하나가 메모리의 1바이트다.
  • 각 바이트마다 주소가 하나씩 할당된다. (주소: 0, 1, 2, 3, ...)

메모리 주소 자체는 가로줄을 가리키는 참조값일 뿐이다.
그 자체가 따로 메모리 공간을 차지하진 않는다.


하지만 주소도 결국 하나의 값(value)이다.
따라서 이 주소를 변수에 저장하게 되면, 그 변수는 메모리 공간을 차지하게 된다.

int x = 8;
int *y = &x;  // x의 주소를 y라는 포인터 변수에 저장

여기서 x는 8이라는 정수 값을 저장하고,
y는 x의 주소값을 저장한다.

이때 y 자체도 메모리 공간에 저장되며,
그 안에는 “x는 이 위치에 있어요”라는 주소 값이 담기게 된다.


[ 단위 정리 ]

컴퓨터는 2진수 세계이기 때문에,
단위도 2의 제곱 단위로 나아간다!

단위약어크기 (바이트 기준)2의 거듭제곱
비트bit--
바이트B8비트2³ 비트
킬로바이트KB1,024 B2¹⁰ B
메가바이트MB1,024 KB2²⁰ B
기가바이트GB1,024 MB2³⁰ B
테라바이트TB1,024 GB2⁴⁰ B

💡 왜 1KB가 1024B야? 왜 1000이 아닌가?

우리는 평소 킬로 = 1000으로 알고 있지만,
컴퓨터는 2진수 기반이라서 2¹⁰ = 1024를 더 자연스럽게 쓴다고 한다.

1 KB = 2^10 B = 1024 B

즉, 1000이 아니라 1024를 기준으로 단위를 올린다.


주소 공간 & 비트 수의 관계

9장에서 헷갈릴 법한 개념 중 하나가 바로 주소 공간과 비트 수의 관계다.

"비트 수"는 "주소 공간의 크기"를 말한다

n비트로 표현할 수 있는 주소는 최대 2^n개.

예를 들어:

비트 수표현 가능한 주소 수커버 가능한 바이트 수
1비트2 (0~1)2B
2비트4 (0~3)4B
10비트1024 (0~1023)1024B = 1KB

즉, 10비트짜리 주소 공간이면 1024개의 바이트 주소를 만들 수 있고,
→ 그 말은 1KB 크기의 메모리 공간을 표현할 수 있다는 뜻이다.

❓ 그럼 9장에서 "1KB를 표현하려면 10비트 필요하다"는 건?

이렇게 해석하면 된다.

"10비트짜리 주소 공간이면 → 1024개의 주소 가능
주소는 각 1바이트를 가리킨다.
즉, 1024개의 주소가 있다면 -> 1024개의 바이트를 가리킬 수 있다는 뜻이다.


💡정리

이건 1KB의 메모리를 "소유"하기 위한 비트 수가 아니라,
1KB를 "표현"하기 위해 필요한 비트 수를 말한다.

→ 즉, 비트 수는 "주소 개수", 바이트 수는 "가리키는 데이터 양"을 의미한다!

profile
이유민

2개의 댓글

comment-user-thumbnail
2025년 4월 25일

와 마침 햇갈리던 개념이었는데 고마워욤 맹쥐님 ~

1개의 답글