프로그래밍을 배우다 보면 0xFF가 255라는 걸 알아야 하는 순간이 온다. 색상 코드, 메모리 주소, 네트워크 설정까지 16진수는 곳곳에 쓰인다. 10진수와 16진수를 머리로 변환하는 건 한두 자리까지가 한계다.
자주 쓰이는 4가지 진법
- 2진수 (Binary)
- 0과 1만 사용한다. 컴퓨터가 내부적으로 데이터를 처리하는 기본 단위다. 1010(2) = 10(10).
- 8진수 (Octal)
- 0~7까지 사용한다. 리눅스 파일 권한 설정(chmod 755)에서 자주 보인다.
- 10진수 (Decimal)
- 0~9까지 사용하는, 우리가 일상에서 쓰는 숫자 체계다.
- 16진수 (Hexadecimal)
- 0~9와 A~F까지 사용한다. 색상 코드(#FF5733), 메모리 주소, MAC 주소 등에 쓰인다.
변환 예시 한눈에 보기
| 10진수 | 2진수 | 8진수 | 16진수 |
|---|---|---|---|
| 10 | 1010 | 12 | A |
| 100 | 1100100 | 144 | 64 |
| 255 | 11111111 | 377 | FF |
| 1024 | 10000000000 | 2000 | 400 |
표에서 보듯이 숫자가 커질수록 2진수 자릿수가 급격히 늘어난다. 직접 나눗셈으로 변환하면 실수가 생기기 쉬운 이유다.
실제 어디에 쓰일까
- 웹 개발: CSS 색상 코드가 16진수(#FFFFFF = 흰색)
- 네트워크: IP 주소의 서브넷 마스크를 2진수로 계산
- 리눅스: 파일 권한을 8진수로 설정(chmod 644)
- 프로그래밍: 비트 연산, 메모리 주소 표기에 16진수 사용
- 정보처리 시험: 진법 변환 문제가 매회 출제됨
TIP 정보처리기사 시험을 준비한다면 10진수 ↔ 2진수, 10진수 ↔ 16진수 변환을 손으로 푸는 연습을 하되, 검산은 진법 변환기로 하면 정확하다. 숫자 하나 입력하면 2진수, 8진수, 10진수, 16진수가 동시에 나온다.
진법 변환은 원리를 이해하는 것과 실무에서 빠르게 처리하는 것이 별개다. 원리는 한 번만 익혀두고, 실제 작업에서는 도구를 쓰는 게 효율적이다.