유틸리티

10진수를 2진수, 16진수로 바꾸는 법 (진법 변환 정리)

코딩 수업에서 갑자기 "10진수 255를 2진수로 바꿔보세요"라는 문제가 나온다. 손으로 나눗셈을 반복하면 풀 수는 있는데, 16진수까지 나오면 머리가 복잡해진다. 진법 변환은 원리만 알면 단순한데, 실전에서는 도구를 쓰는 게 훨씬 빠르다.

진법이 왜 여러 개 있을까

컴퓨터는 0과 1만 이해하기 때문에 2진수가 기본이다. 하지만 2진수는 자릿수가 길어서 사람이 읽기 불편하다. 255를 2진수로 쓰면 11111111이 되는데, 16진수로 쓰면 FF 두 글자로 끝난다. 그래서 프로그래밍에서는 16진수를 자주 쓴다.

주요 진법 비교표

10진수2진수8진수16진수
0000
10101012A
100110010014464
25511111111377FF

16진수에서 A~F는 10~15를 나타낸다. CSS 색상 코드 #FF0000이 빨간색인 이유도 R(빨강)이 16진수 FF, 즉 10진수 255(최대값)이기 때문이다.

손으로 변환하는 방법

10진수 → 2진수

10진수를 2로 나누면서 나머지를 역순으로 적으면 된다. 13을 예로 들면, 13÷2=6...1, 6÷2=3...0, 3÷2=1...1, 1÷2=0...1이므로 결과는 1101이다.

10진수 → 16진수

같은 원리로 16으로 나눈다. 255÷16=15...15이므로 15는 F, 결과는 FF가 된다. 나머지가 10 이상이면 A(10), B(11), C(12), D(13), E(14), F(15)로 바꿔야 해서 좀 더 번거롭다.

참고 시험이 아니라면 진법 변환기에 숫자를 넣는 게 빠르다. 한 칸에 입력하면 2진수, 8진수, 10진수, 16진수가 동시에 표시되고, 2~36진법까지 커스텀 변환도 가능하다. ASCII 문자 코드 변환도 지원한다.

프로그래밍에서 진법이 쓰이는 곳

  • 색상 코드 — CSS에서 #FFFFFF는 16진수 표기
  • 메모리 주소 — 디버깅 시 0x7FFE 같은 16진수 주소 확인
  • 권한 설정 — 리눅스 파일 권한 chmod 755는 8진수 기반
  • 네트워크 — IP 서브넷 마스크 계산에 2진수 사용

진법 변환 원리는 나눗셈 반복이 전부라서 한 번 이해하면 어렵지 않다. 다만 실무에서 매번 손으로 할 필요는 없으니, 원리를 이해한 뒤에는 도구를 쓰는 게 실수를 줄이는 방법이다.