프로그래밍 수업에서 10진수 255를 2진수로 바꾸라는 문제가 나왔다. 손으로 나누기를 반복할 수도 있지만, 16진수까지 동시에 변환해야 한다면 계산이 꽤 번거롭다. 진법 변환의 원리와 빠르게 처리하는 방법을 정리했다.
자주 쓰는 진법 4가지
| 진법 | 사용 숫자 | 주요 용도 |
|---|---|---|
| 2진수(Binary) | 0, 1 | 컴퓨터 내부 처리, 서브넷 마스크 |
| 8진수(Octal) | 0~7 | 리눅스 파일 권한 (chmod 755) |
| 10진수(Decimal) | 0~9 | 일상 숫자, 수학 |
| 16진수(Hex) | 0~9, A~F | 색상 코드(#FF5733), 메모리 주소 |
컴퓨터는 모든 데이터를 2진수로 처리하지만, 사람이 읽기에는 너무 길다. 그래서 2진수를 4자리씩 묶어 16진수로, 3자리씩 묶어 8진수로 표현한다.
변환 원리
10진수 → 2진수
10진수를 2로 계속 나누면서 나머지를 아래에서 위로 읽는다.
예시 10진수 13 → 2진수
13 ÷ 2 = 6 나머지 1
6 ÷ 2 = 3 나머지 0
3 ÷ 2 = 1 나머지 1
1 ÷ 2 = 0 나머지 1
→ 결과:1101
16진수 → 10진수
각 자릿수에 16의 거듭제곱을 곱해서 더한다.
예시 16진수 FF → 10진수
F(15) × 16¹ + F(15) × 16⁰ = 240 + 15 =255
자주 나오는 변환 값
| 10진수 | 2진수 | 8진수 | 16진수 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 10 | 1010 | 12 | A |
| 100 | 1100100 | 144 | 64 |
| 255 | 11111111 | 377 | FF |
도구로 한 번에 변환하기
진법 변환은 원리를 알아두면 좋지만, 실무에서 매번 손으로 계산할 일은 없다. 진법 변환기에 숫자 하나만 입력하면 2진수, 8진수, 10진수, 16진수 네 가지가 동시에 나온다. 2~36진법까지 커스텀 변환도 되고, 문자의 ASCII 코드도 확인할 수 있다.
시험 공부할 때 원리를 익히고, 실제 코딩할 때는 도구를 쓰는 게 실수를 줄이는 방법이다.