진법 변환 완전 정복 — 2·8·10·16진수 쉽게 바꾸기
2·8·10·16진수의 개념과 상호 변환법(나눗셈·자리값), 컴퓨터가 2진수와 16진수를 쓰는 이유를 예시로 정리합니다.
프로그래밍이나 컴퓨터 공부를 하다 보면 0xFF, 1010, 0o17 같은 낯선 숫자 표기를 만나게 됩니다. 이것들은 모두 같은 수를 서로 다른 진법으로 적은 것일 뿐입니다. 진법의 개념과 변환 규칙만 익히면 2진수, 8진수, 16진수가 더 이상 어렵지 않습니다. 빠르게 결과만 확인하고 싶다면 진법 변환기로 숫자를 넣어 바로 바꿔 볼 수 있고, 아래에서는 그 원리를 차근차근 설명합니다.
한눈에 보기
- 진법이란 수를 몇 종류의 숫자로 표현하는지를 뜻합니다.
- 2진수는 0·1, 8진수는 0
7, 10진수는 09, 16진수는 09와 AF를 씁니다. - 10진수를 다른 진법으로 바꿀 때는 그 진수로 계속 나눠서 나머지를 역순으로 적습니다.
- 다른 진법을 10진수로 바꿀 때는 각 자리 숫자에 밑의 거듭제곱을 곱해 더합니다.
- 컴퓨터는 전기 신호의 on/off 때문에 2진수를 쓰고, 너무 길어서 16진수로 짧게 표기합니다.
진법이란 무엇인가
진법(進法)은 하나의 수를 표현할 때 숫자를 몇 개 사용하는지를 가리키는 약속입니다. 우리가 평소 쓰는 10진수는 0부터 9까지 열 개의 숫자를 사용하고, 9 다음에는 자리를 올려 10이 됩니다. 같은 원리로 진법마다 사용하는 숫자의 개수가 정해져 있습니다.
| 진법 | 사용하는 숫자 | 예시 |
|---|---|---|
| 2진수 | 0, 1 | 1010 |
| 8진수 | 0~7 | 17 |
| 10진수 | 0~9 | 26 |
| 16진수 | 0 | 1A |
여기서 16진수가 특이합니다. 한 자리에 10부터 15까지의 값을 담아야 하는데 한 글자로 적을 숫자가 없어서, 알파벳을 빌려 A=10, B=11, C=12, D=13, E=14, F=15로 표기합니다.
10진수를 2·8·16진수로 변환하기
10진수를 다른 진법으로 바꾸는 핵심은 바꾸려는 진수로 계속 나누고, 나온 나머지를 거꾸로(역순) 읽는 것입니다.
예를 들어 10진수 26을 2진수로 바꿔 보겠습니다.
- 26 ÷ 2 = 13 … 나머지 0
- 13 ÷ 2 = 6 … 나머지 1
- 6 ÷ 2 = 3 … 나머지 0
- 3 ÷ 2 = 1 … 나머지 1
- 1 ÷ 2 = 0 … 나머지 1
나머지를 아래에서 위로(역순) 읽으면 11010입니다. 즉 26 = 11010(2진).
같은 26을 8진수로 바꾸면 8로 나눠 32(8진), 16진수로 바꾸면 16으로 나눠 1A(16진)가 됩니다. 정리하면 다음과 같습니다.
| 10진수 | 2진수 | 8진수 | 16진수 |
|---|---|---|---|
| 26 | 11010 | 32 | 1A |
숫자가 커지면 직접 나누기가 번거로우니, 진법 변환기에 10진수를 입력해 한 번에 결과를 확인하는 것이 편합니다.
2·8·16진수를 10진수로 변환하기
반대 방향은 자리값(밑의 거듭제곱)을 이용합니다. 각 자리의 숫자에 그 자리의 자리값을 곱한 뒤 모두 더하면 됩니다. 자리값은 가장 오른쪽 자리가 밑의 0제곱(=1)이고, 왼쪽으로 갈수록 1제곱, 2제곱으로 커집니다.
2진수 11010을 10진수로 풀어 보겠습니다.
- 1 × 2⁴ = 16
- 1 × 2³ = 8
- 0 × 2² = 0
- 1 × 2¹ = 2
- 0 × 2⁰ = 0
이를 모두 더하면 16 + 8 + 0 + 2 + 0 = 26이 됩니다.
16진수 1A도 같은 방식입니다. A는 10이므로 (1 × 16¹) + (10 × 16⁰) = 16 + 10 = 26입니다. 8진수 32 역시 (3 × 8¹) + (2 × 8⁰) = 24 + 2 = 26으로 동일한 값임을 확인할 수 있습니다.
컴퓨터가 2진수와 16진수를 쓰는 이유
컴퓨터의 모든 회로는 전기가 흐르거나(on) 흐르지 않는(off) 두 가지 상태로 동작합니다. 이 두 상태를 그대로 1과 0에 대응시키면 자연스럽게 2진수가 됩니다. 그래서 컴퓨터 내부의 모든 데이터는 결국 2진수로 저장되고 계산됩니다.
문제는 2진수가 너무 길다는 점입니다. 예를 들어 빨간색을 나타내는 색상 코드는 2진수로 적으면 자릿수가 길어 읽기 어렵지만, 16진수로는 #FF0000처럼 짧게 표현됩니다. 여기서 16진수 한 자리는 2진수 정확히 4자리에 대응하기 때문에, 2진수를 4자리씩 묶으면 곧바로 16진수로 바꿀 수 있어 변환이 간단합니다.
이런 이유로 색상 코드, 메모리 주소, 디버깅 값 등 긴 2진수를 사람이 읽어야 하는 곳에서는 16진수 표기가 널리 쓰입니다. 8진수도 비슷한 목적(2진수 3자리 묶음)으로 권한 표기 등에 사용됩니다.
자주 묻는 질문
16진수에서 A부터 F는 무슨 뜻인가요? 16진수는 한 자리에 0부터 15까지를 담아야 하는데, 10 이상은 한 글자 숫자가 없어 알파벳으로 대신합니다. A=10, B=11, C=12, D=13, E=14, F=15입니다.
10진수를 2진수로 바꿀 때 나머지를 왜 거꾸로 읽나요? 나눗셈을 반복하면 가장 낮은 자리(1의 자리에 해당하는 값)부터 나머지가 나오기 때문입니다. 마지막에 나온 나머지가 가장 높은 자리이므로, 역순으로 읽어야 올바른 자리 순서가 됩니다.
16진수와 2진수는 왜 변환이 쉽다고 하나요? 16은 2의 4제곱이라서 16진수 한 자리가 2진수 4자리와 정확히 대응하기 때문입니다. 2진수를 오른쪽부터 4자리씩 묶어 각 묶음을 16진수 한 글자로 바꾸면 됩니다.
컴퓨터는 왜 굳이 2진수를 쓰나요? 전자 회로는 전기가 흐르는 on과 흐르지 않는 off 두 상태를 가장 안정적으로 구분할 수 있습니다. 이 두 상태를 1과 0으로 보면 자연스럽게 2진수가 되므로, 기계가 처리하기에 가장 단순하고 오류가 적습니다.
진법은 결국 같은 수를 다른 옷으로 갈아입히는 것일 뿐입니다. 나눗셈으로 내려가고 자리값으로 올라온다는 두 규칙만 기억하면 어떤 진법이든 자유롭게 오갈 수 있습니다. 직접 계산이 번거롭거나 결과를 빠르게 확인하고 싶다면 진법 변환기에 숫자를 입력해 2·8·10·16진수를 한 번에 변환해 보세요.
🧰 관련 도구
관련 글
텍스트 음성 변환(TTS)이란? 원리와 똑똑한 활용법
글자를 음성으로 읽어주는 TTS의 원리와 브라우저 음성 합성(Web Speech API), 교정·접근성·외국어 발음 등 활용법을 정리합니다.
CSS box-shadow 완전 정복 — 그림자 값 5가지 이해
box-shadow의 가로·세로 오프셋·번짐(blur)·확산(spread)·색과 inset, 여러 그림자 겹치기를 예시 코드로 정리합니다.
CSS 그라데이션 만드는 법 — linear·radial·conic
CSS linear-gradient·radial-gradient·conic-gradient 문법과 방향·색 정지점(color stop) 지정법을 예시 코드로 정리합니다.