컴퓨터는 0과 1밖에 모른다. 우리가 입력하는 숫자 255는 컴퓨터 내부에서 11111111로 처리되고, 메모리 주소는 0xFF 같은 16진수로 표기된다. 진법 변환은 이 숫자들 사이를 오가는 기술이다.
진법이란
진법은 숫자를 세는 단위 체계다. 우리가 일상에서 쓰는 10진법은 0~9까지 10개의 숫자로 수를 표현하고, 2진법은 0과 1 두 개만 쓴다.
| 진법 | 사용 숫자 | 주요 쓰임 |
|---|---|---|
| 2진수 | 0, 1 | CPU 내부 연산, 비트 플래그 |
| 8진수 | 0~7 | 리눅스 파일 권한 (chmod 755) |
| 10진수 | 0~9 | 일상 숫자, 일반 계산 |
| 16진수 | 0~9, A~F | 메모리 주소, 색상 코드, MAC 주소 |
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진수와 2진수의 관계
16진수 한 자리는 2진수 4자리와 정확히 대응된다. 그래서 긴 2진수를 4자리씩 끊어서 16진수로 변환하면 간결해진다.
0000= 0,0001= 1, ...1001= 91010= A,1011= B, ...1111= F
예를 들어 2진수 11111111은 1111 + 1111 = FF이고, 10진수로는 255다. CSS에서 흰색을 #FFFFFF로 쓰는 이유가 바로 이것이다.
직접 계산이 번거로울 때
시험 공부 중에 원리를 이해하는 것과 실무에서 빠르게 결과를 얻는 것은 다른 문제다. 진법 변환기에 숫자 하나를 입력하면 2진수, 8진수, 10진수, 16진수가 동시에 표시된다. 36진수까지 확장 변환도 되고, 입력한 문자의 ASCII 코드도 바로 확인할 수 있다.
진법 변환 원리를 알면 디버깅이나 네트워크 설정에서 16진수가 나와도 당황하지 않는다. 원리는 한 번 익혀두고, 실무에서는 도구로 검증하는 게 실수를 줄이는 방법이다.