프로그래밍을 배우다 보면 0xFF가 255라는 걸 알아야 하고, 네트워크 수업에서는 서브넷 마스크를 2진수로 풀어야 한다. 진법 변환은 원리만 알면 간단한데, 큰 숫자를 손으로 계산하려면 시간이 오래 걸린다.
진법이 뭔지, 왜 여러 가지가 있는지
진법은 숫자를 표현하는 체계다. 일상에서 쓰는 10진법은 0~9까지 10개의 숫자를 사용하고, 컴퓨터는 0과 1만 쓰는 2진법으로 데이터를 처리한다.
| 진법 | 사용 숫자 | 쓰이는 곳 |
|---|---|---|
| 2진수 | 0, 1 | 컴퓨터 내부 연산, 네트워크 마스크 |
| 8진수 | 0~7 | 유닉스 파일 권한 (chmod 755) |
| 10진수 | 0~9 | 일상생활 전부 |
| 16진수 | 0~9, A~F | 색상 코드, 메모리 주소, MAC 주소 |
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)로 표기한다.
자주 쓰이는 변환 값 모아보기
| 10진수 | 2진수 | 16진수 | 활용 |
|---|---|---|---|
| 255 | 11111111 | FF | 색상 코드 최대값, 서브넷 마스크 |
| 128 | 10000000 | 80 | IP 주소 클래스 구분 |
| 127 | 01111111 | 7F | signed byte 최대값 |
| 65535 | 1111111111111111 | FFFF | 16비트 최대값 |
큰 숫자나 특수 진법이 필요하면
손으로 계산하면 자릿수가 늘어날수록 실수가 잦아진다. 진법 변환기에 숫자를 넣으면 2진수, 8진수, 10진수, 16진수 결과가 동시에 나온다. 2~36진법 사이 임의 변환도 지원하고, ASCII 문자의 코드값까지 확인할 수 있어서 과제나 개발 중에 바로 참고하기 좋다.
진법 변환의 원리를 이해하는 건 중요하지만, 실전에서는 도구를 쓰는 게 정확하고 빠르다.