코딩 시험이나 정보처리기사 문제에서 "10진수 255를 16진수로 변환하시오" 같은 문제가 나온다. 나누기를 반복하는 풀이법을 배우긴 하지만, 실무에서는 도구로 바로 변환하는 경우가 대부분이다. 원리를 한 번 이해해두면 왜 그 결과가 나오는지도 자연스럽게 따라온다.
진법 4가지 한눈에 보기
| 진법 | 사용 숫자 | 주 사용처 | 10진수 255 변환 |
|---|---|---|---|
| 2진수 | 0, 1 | 컴퓨터 내부 연산 | 11111111 |
| 8진수 | 0~7 | 유닉스 파일 권한 | 377 |
| 10진수 | 0~9 | 일상 생활 | 255 |
| 16진수 | 0~9, A~F | 메모리 주소, 색상 코드 | FF |
컴퓨터는 모든 데이터를 2진수(0과 1)로 처리한다. 하지만 2진수는 자릿수가 길어서 사람이 읽기 불편하다. 그래서 16진수를 자주 쓰는데, 2진수 4자리가 16진수 1자리에 대응되기 때문에 변환이 간편하다.
10진수를 2진수로 바꾸는 원리
10진수를 2로 나누면서 나머지를 아래에서 위로 읽으면 2진수가 된다.
예시 10진수 13을 2진수로 변환
13 ÷ 2 = 6 ... 나머지 1
6 ÷ 2 = 3 ... 나머지 0
3 ÷ 2 = 1 ... 나머지 1
1 ÷ 2 = 0 ... 나머지 1
아래에서 위로 읽으면 → 1101
16진수도 같은 방식이다. 2 대신 16으로 나누고, 나머지가 10 이상이면 A(10), B(11), C(12), D(13), E(14), F(15)로 표기한다.
실무에서 자주 쓰는 변환
- CSS 색상 코드
- #FF5733처럼 16진수 6자리로 색을 표현한다. FF는 10진수 255, 57은 87, 33은 51이다. RGB(255, 87, 51)과 같은 색이다.
- 유닉스 파일 권한
chmod 755에서 7, 5, 5는 8진수다. 7을 2진수로 바꾸면 111(읽기+쓰기+실행), 5는 101(읽기+실행)이 된다.- 메모리 주소
- 0x7FFF 같은 표기는 16진수 메모리 주소다. 디버깅할 때 16진수를 10진수로 바꿔야 할 때가 있다.
- 네트워크 서브넷 마스크
- 255.255.255.0을 2진수로 바꾸면 11111111.11111111.11111111.00000000이다. 서브넷 계산에서 2진수 변환이 필수다.
매번 손으로 나누기를 할 수는 없다. 온라인 진법 변환기에 숫자를 입력하면 2진수, 8진수, 10진수, 16진수가 동시에 표시된다. 2~36진법까지 사용자 정의도 되고, ASCII 문자 코드 변환도 가능하다.
외워두면 편한 변환표
| 10진수 | 2진수 | 8진수 | 16진수 |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 8 | 1000 | 10 | 8 |
| 10 | 1010 | 12 | A |
| 15 | 1111 | 17 | F |
| 16 | 10000 | 20 | 10 |
| 128 | 10000000 | 200 | 80 |
| 255 | 11111111 | 377 | FF |
진법 변환은 원리만 이해하면 어렵지 않다. 시험 풀이용이든 실무 검산용이든, 한 번 익혀두면 컴퓨터가 숫자를 다루는 방식이 명확하게 보인다.