컴퓨터공학을 전공하거나 프로그래밍을 공부하다 보면 다양한 진법(進法, number system) 에 대해 배우게 됩니다. 그 중에서도 십진수(Decimal), 이진수(Binary), 팔진수(Octal), 16진수(Hexadecimal) 는 가장 기본이면서도 중요한 수 체계입니다.
이번 포스팅에서는 각 진법이 무엇인지, 왜 필요한지, 그리고 어떻게 활용되는지를 이해하기 쉽게 정리해보았습니다.
1. 십진수 (Decimal: 10진법)
우리가 일상생활에서 사용하는 익숙한 숫자 체계입니다.
0부터 9까지 총 10개의 숫자를 사용하며, 자릿수가 올라갈수록 10의 거듭제곱으로 계산됩니다.
135 = 1×10² + 3×10¹ + 5×10⁰
십진수를 사용하는 이유는?
역사적으로 인간의 손가락이 10개라서 자연스럽게 10진법이 사용되었다는 설이 있습니다.
2. 이진수 (Binary: 2진법)
컴퓨터가 내부적으로 사용하는 수 체계입니다.
0과 1, 단 두 개의 숫자만 사용하며, 이진법이 바로 디지털 회로와 밀접한 관련이 있습니다.
(1011)_2 = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 11 (십진수)
왜 컴퓨터는 이진수를 사용할까요?
트랜지스터와 같은 전자 회로는 전류가 흐르는 상태(1)와 흐르지 않는 상태(0)를 표현하기 때문에, 이진수는 하드웨어적으로 가장 효율적인 방식입니다.
3. 팔진수 (Octal: 8진법)
0부터 7까지 8개의 숫자를 사용하는 수 체계입니다.
예전에는 메모리 용량이나 파일 권한 등을 표현할 때 자주 사용되었습니다.
(17)_8 = 1×8¹ + 7×8⁰ = 15 (십진수)
팔진수가 사용되는 이유는?
이진수를 3자리씩 묶어서 표현하면 팔진수로 쉽게 변환할 수 있습니다.
(101111)_2 → (101)(111) → (5)(7) → (57)_8
4. 16진수 (Hexadecimal: 16진법)
0부터 9, 그리고 A부터 F까지 총 16개의 숫자를 사용하는 수 체계입니다.
A는 10, B는 11, ..., F는 15를 의미합니다.
(1F)_16 = 1×16¹ + 15×16⁰ = 31 (십진수)
16진수가 중요한 이유는?
이진수를 4자리씩 묶으면 간단하게 16진수로 표현할 수 있습니다.
메모리 주소, 디버깅, 색상 코드 등 다양한 실무에서 널리 사용됩니다.
#FF5733 → R: 255, G: 87, B: 51
5. 진법 간 변환 요약
십진수 (Decimal) | 이진수 (Binary) | 팔진수 (Octal) | 십육진수 (Hex) |
1 | 0001 | 1 | 1 |
2 | 0010 | 2 | 2 |
3 | 0011 | 3 | 3 |
4 | 0100 | 4 | 4 |
5 | 0101 | 5 | 5 |
6 | 0110 | 6 | 6 |
7 | 0111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
이진수 → 팔진수: 3비트씩 끊어서 계산
이진수 → 16진수: 4비트씩 끊어서 계산
컴퓨터는 기본적으로 전기적인 장치입니다.
이진수는 이러한 전기 신호의 on/off 상태를 표현하기에 가장 적합하며, 팔진수와 16진수는 이진수를 사람이 더 쉽게 읽고 쓰기 위한 표현 방식입니다.
단순한 진법 변환 문제를 푸는 것에 그치지 않고,
언제, 왜 이러한 진법이 사용되는지를 이해하는 것이 전공자로서 더 중요한 부분입니다.
'cs' 카테고리의 다른 글
[CS] 플립플롭(Flip-Flop)이란? (0) | 2025.04.10 |
---|---|
[CS] 리플 캐리 가산기(Ripple Carry Adder) (0) | 2025.04.09 |
[CS] 반가산기(Half Adder)와 전가산기(Full Adder) 동작 정리 (0) | 2025.04.08 |
[CS] 논리 게이트(Logical Gates)란? (0) | 2025.03.30 |
[CS] 이진수와 비트: 컴퓨터 정보 표현의 기초 (0) | 2025.03.29 |