이번 문서의 목표: 이 파일을 다 읽으면 “기수(base)가 다르다”는 말이 정확히 무엇을 바꾸는지 설명할 수 있고, 2·8·10·16진수라는 이름이 왜 그렇게 불리는지, 그리고 왜 컴퓨터가 하필 2진수를 쓰는지 직관적으로 답할 수 있다.
왜 진법을 다시 짚고 가는가
우리는 어릴 때부터 10진수(decimal)만 써 왔기 때문에 “자리값”이라는 개념을 의식하지 못한 채 숫자를 씁니다. 그런데 06편부터 본격적으로 다룰 진법 변환·산술 회로를 이해하려면, “10진수가 왜 그렇게 동작하는가”부터 분해해서 봐야 2진수·8진수·16진수가 “같은 원리를 다른 개수의 숫자로 반복한 것”이라는 사실이 보입니다.
이 편은 06편의 진법 변환 알고리즘을 미리 풀어 놓는 자리가 아닙니다. 변환 절차의 자세한 계산은 06편에서 다루고, 여기서는 그 계산이 왜 성립하는지에 대한 기초 직관만 확실히 잡아 둡니다. 이미 진법에 익숙한 학습자는 이 편을 훑어보고 바로 06편으로 넘어가도 좋습니다.
쉽게 말하면: 이 편은 “숫자를 세는 규칙 자체”를 낯설게 다시 들여다보는 시간입니다.
1. 자리값과 기수 — 숫자가 위치에 따라 의미를 바꾸는 이유
10진수 “352”를 볼 때 우리는 자연스럽게 “삼백오십이”라고 읽지만, 이 숫자가 왜 그런 크기를 나타내는지 자리별로 풀어 쓰면 다음과 같습니다.
- : 각 자리에 적힌 숫자(digit)
- : 기수(base, radix). 한 자리가 넘칠 때 윗자리로 얼마나 올라가는지를 정하는 기준값
- : 각 자리의 자리값(place value). 오른쪽에서 왼쪽으로 갈수록 기수의 거듭제곱이 하나씩 커짐
이 식이 뜻하는 것은 “숫자 3이 같은 모양이어도 몇 번째 자리에 있느냐에 따라 실제 크기가 300도 되고 3도 된다”는 사실입니다. 즉 숫자 하나의 의미는 그 숫자가 놓인 위치의 자리값과 곱해져서 정해집니다. 이런 방식으로 수를 표현하는 체계를 위치 기수법(positional notation)이라 부릅니다.
쉽게 말하면: 자리값은 “이 칸에 사람 한 명이 들어오면 실제로는 몇 명 몫인가”를 정해 두는 규칙입니다. 백의 자리 칸에 3이 들어오면 300명 몫이 되는 것과 같습니다.
기수 10이라는 숫자 자체는 “한 자리에서 쓸 수 있는 숫자의 가짓수가 10개(0~9)“라는 뜻이기도 합니다. 한 자리에 10개의 서로 다른 기호를 다 쓰고 나면(9 다음) 그 자리는 0으로 되돌아가고 왼쪽 자리가 1 늘어납니다. 이 “한 자리를 다 채우면 윗자리로 올라간다”는 규칙이 바로 캐리(carry, 자리올림)의 근원이며, 15편의 가산기 회로에서 캐리를 하드웨어로 어떻게 처리하는지 다시 다룹니다.
2. 기수가 다르면 무엇이 바뀌는가 — 2·8·10·16진의 발상
기수를 10이 아닌 다른 값으로 바꿔도 앞의 원리는 그대로 유지됩니다. 다만 한 자리에서 쓸 수 있는 숫자의 가짓수만 달라집니다.
| 진법 | 기수 | 한 자리에 쓰는 숫자 | 특징 |
|---|---|---|---|
| 2진수(binary) | 2 | 0, 1 | 논리회로의 값 0/1과 정확히 대응, 디지털 시스템의 기본 표현 |
| 8진수(octal) | 8 | 0–7 | 2진수 3자리를 한 묶음으로 표현할 때 편리(2의 3제곱=8) |
| 10진수(decimal) | 10 | 0–9 | 사람이 일상적으로 쓰는 진법 |
| 16진수(hexadecimal) | 16 | 0–9, A–F | 2진수 4자리를 한 묶음으로 표현할 때 편리(2의 4제곱=16), A–F는 10–15를 나타내는 문자 |
이 표에서 눈여겨볼 점은 8진수와 16진수의 기수가 각각 , 라는 것입니다. 이는 우연이 아니라, 2진수 여러 자리를 묶어서 사람이 읽기 편하게 축약하려는 목적으로 선택된 진법이기 때문입니다. 예를 들어 2진수를 8진수로 바꿀 때는 2진수를 오른쪽부터 3자리씩 묶어 각 묶음을 8진수 한 자리로 바꾸면 되는데, 이는 이기 때문에 성립하는 지름길입니다. 이 지름길의 정확한 계산 절차는 06편에서 표와 함께 다룹니다.
16진수에서 10 이상의 값을 나타낼 때 A, B, C, D, E, F라는 문자를 쓰는 이유도 간단합니다. 한 자리로 0부터 15까지 열여섯 가지 값을 표현해야 하는데, 아라비아 숫자는 0~9까지 열 개뿐이므로 나머지 여섯 개(10, 11, 12, 13, 14, 15)를 알파벳 A부터 F까지로 대신 표기하기로 약속한 것입니다.
| 10진수 값 | 16진수 표기 |
|---|---|
| 10 | A |
| 11 | B |
| 12 | C |
| 13 | D |
| 14 | E |
| 15 | F |
쉽게 말하면: 진법이 다르다는 것은 “한 자리에 들어갈 수 있는 숫자판이 몇 칸짜리냐”가 다르다는 뜻입니다. 10진수는 열 칸짜리 숫자판, 2진수는 두 칸짜리 숫자판을 쓰는 것뿐이고, 자리값이 곱해져서 크기를 만드는 원리 자체는 똑같습니다.
자주 틀리는 점: 8진수·16진수를 “2진수와 무관한 별개의 체계”로 여기는 경우가 많습니다. 실제로는 8진수·16진수 모두 2진수를 사람이 읽기 편하게 압축 표기한 것에 가깝습니다. 그래서 시험에서 “8진수 한 자리는 2진수 몇 자리에 대응하는가”를 물으면, 이라는 관계에서 답이 3자리라는 것을 바로 끌어낼 수 있어야 합니다.
3. 왜 하필 2진수인가 — 디지털 회로와의 연결
10진수처럼 사람에게 익숙한 진법을 두고 컴퓨터가 굳이 2진수를 쓰는 이유는, 전자회로가 안정적으로 구분할 수 있는 상태의 개수와 직접 관련이 있습니다. 전압의 높낮이로 신호를 표현할 때, 상태가 두 가지(낮음/높음)뿐이면 회로가 “지금이 낮은 상태인지 높은 상태인지”를 오판할 확률이 매우 낮습니다. 반면 상태를 10단계로 세밀하게 나누어 전압만으로 0부터 9까지 구분하려 한다면, 아주 작은 전압 흔들림(잡음)에도 어느 단계인지 헷갈리게 됩니다.
이 직관을 시험 수준으로 정리하면 다음과 같습니다.
- 상태가 2개(0, 1)뿐이면 회로 설계가 단순해지고, 잡음에 대한 여유(노이즈 마진)가 커서 오류가 적다.
- 논리값의 집합 (01편 참고)과 2진수의 두 숫자(0, 1)가 정확히 일치하므로, 논리연산과 수치연산을 같은 회로로 자연스럽게 연결할 수 있다.
- 8진수·16진수는 회로가 직접 그 진법으로 계산한다는 뜻이 아니라, 사람이 2진수를 더 짧게 적기 위한 표기 도구일 뿐이다.
전압 단계와 논리값의 정확한 대응 관계(어느 전압 범위가 0이고 어느 범위가 1인지)는 04편에서 다룹니다. 여기서는 “회로가 다루기에는 두 단계가 가장 안전하고 단순해서 2진수를 표준으로 쓴다”는 인과관계만 잡아 두면 됩니다.
쉽게 말하면: 스위치 하나로 켜짐/꺼짐만 구분하는 것은 실수할 확률이 거의 없지만, 스위치 하나로 밝기를 10단계로 구분하라고 하면 사람도 헷갈립니다. 회로도 마찬가지입니다.
4. 정수와 실수 표기 — 소수점이 있을 때의 자리값
지금까지는 정수(integer)만 다뤘지만, 자리값의 원리는 소수점 아래에도 그대로 이어집니다. 10진수 소수 “3.52”를 자리값으로 풀면 다음과 같습니다.
소수점을 기준으로 왼쪽은 처럼 자리값이 커지고, 오른쪽은 처럼 자리값이 작아집니다(음의 지수는 “1을 그만큼 나눈 값”을 뜻합니다). 이 원리는 진법이 2·8·16으로 바뀌어도 똑같이 적용되며, 2진 소수를 어떻게 계산하는지는 06편에서 실제 숫자로 다룹니다.
디지털 회로·컴퓨터 내부에서 실수를 표현하는 구체적인 방식(부동소수점 등)은 이 과목의 출제범위를 넘어서는 컴퓨터구조 영역이므로 다루지 않습니다. 이 과목에서 실수·소수 표기가 등장하는 것은 대부분 “2진 소수를 10진 소수로, 또는 그 반대로 변환하는 손계산 문제” 수준이며, 그 계산은 06편에서 집중적으로 연습합니다.
5. 기계적 연산과의 연결 직관 — 왜 진법이 산술 회로의 전제가 되는가
15편에서 다룰 가산기(adder) 회로는 결국 “2진수 두 개를 자리마다 더하면서 캐리를 윗자리로 넘기는 절차”를 전자회로로 구현한 것입니다. 이 절차가 성립하려면 앞서 본 자리값의 원리, 즉 “각 자리가 기수의 거듭제곱만큼의 무게를 갖고, 한 자리가 넘치면 캐리가 발생해 윗자리로 올라간다”는 규칙이 전제되어야 합니다.
정리하면, 이 과목에서 진법이 중요한 이유는 단순히 “숫자를 다르게 적는 방법”이어서가 아니라, 디지털 회로의 모든 연산(덧셈, 뺄셈, 비교, 코드 변환)이 결국 이 자리값 규칙 위에서 동작하기 때문입니다. 08편의 보수(complement) 연산, 15편의 가산기·감산기, 23편의 메모리 주소·용량 계산까지 모두 이 편에서 다진 자리값 직관을 계속 재사용합니다.
쉽게 말하면: 진법은 이 과목 전체를 관통하는 “공통 언어”입니다. 여기서 자리값 개념을 확실히 잡아 두면, 뒤에 나오는 모든 계산 문제가 “같은 규칙을 다른 숫자에 적용하는 것”으로 보이기 시작합니다.
핵심 정리
- 위치 기수법에서 각 자리의 숫자는 그 자리의 자리값(기수의 거듭제곱)과 곱해져서 실제 크기를 결정한다.
- 2·8·10·16진수는 기수(한 자리에 쓸 수 있는 숫자의 가짓수)만 다를 뿐 같은 원리로 동작하며, 8진수는 , 16진수는 라는 점에서 2진수와 직접 연결된다.
- 회로가 2진수를 표준으로 쓰는 이유는 두 가지 상태만 구분하면 되어 오류에 강하고 설계가 단순하기 때문이다.
- 소수점 아래 자리는 기수의 음의 거듭제곱으로 자리값이 정해지며, 원리는 정수부와 동일하다.
- 자리값·캐리 개념은 이후 06편의 진법 변환, 08편의 보수, 15편의 가산기까지 이어지는 공통 전제다.