컴퓨터 과학 수업에서 10진수 42를 2진수로 바꾸라는 문제가 나왔다. 2로 나누고 나머지를 적고 다시 나누고. 손으로 하다 보면 어딘가에서 한 자리가 빠지기 마련이다. 16진수로 바꾸라는 문제까지 나오면 더 복잡해진다.
2진수, 8진수, 10진수, 16진수 차이
우리가 일상에서 쓰는 숫자는 10진수다. 컴퓨터는 0과 1만 인식하니까 내부적으로는 2진수를 쓴다. 8진수와 16진수는 2진수를 사람이 읽기 편하게 묶어 표현한 것이다.
| 10진수 | 2진수 | 8진수 | 16진수 |
|---|---|---|---|
| 10 | 1010 | 12 | A |
| 42 | 101010 | 52 | 2A |
| 255 | 11111111 | 377 | FF |
16진수에서 A~F는 10~15를 나타낸다. 2진수 4자리가 16진수 1자리에 대응하기 때문에, 긴 2진수를 16진수로 줄이면 읽기가 훨씬 편하다.
진법 변환이 실제로 필요한 곳
- 웹 개발: CSS 색상 코드
#FF5733이 16진수다. RGB 값(255, 87, 51)과 상호 변환이 필요하다. - 네트워크: IP 주소의 서브넷 마스크를 2진수로 바꿔야 네트워크 범위를 계산할 수 있다. 255.255.255.0은 2진수로 24개의 1이다.
- 프로그래밍: 파일 권한(리눅스의 chmod 755)은 8진수로 표기한다. 7은 2진수 111, 즉 읽기+쓰기+실행 전부 허용이다.
- 시험 문제: 정보처리기사, 컴퓨터활용능력 등 IT 자격증 시험에서 진법 변환은 단골 출제 범위다.
변환기 사용법
온라인 진법 변환기에 아무 진법의 숫자를 입력하면 나머지 세 진법으로 동시에 변환된다. 10진수 칸에 42를 넣으면 2진수 101010, 8진수 52, 16진수 2A가 즉시 표시되는 식이다.
2~36진법까지 커스텀 변환도 가능하고, 문자를 넣으면 ASCII 코드 값(10진수, 16진수, 2진수)도 나온다.
참고 16진수에서 대소문자는 구분하지 않는다.FF와ff는 같은 값(10진수 255)이다.
손으로 나누기를 반복하는 건 원리를 이해하는 데는 좋지만, 실무에서는 속도가 중요하다. 숫자 하나 넣으면 네 가지 진법이 동시에 나오니까, 시험 검산이든 코딩이든 빠르게 확인할 수 있다.