유틸리티

진법 변환 쉽게 하는 법, 2진수 10진수 16진수 한 번에

프로그래밍을 배우다 보면 피할 수 없는 게 진법 변환이다. 10진수 255가 16진수로는 FF, 2진수로는 11111111이라는 건 알겠는데, 매번 직접 나눗셈을 해서 변환하기엔 시간이 아깝다.

진법이 여러 개인 이유

일상에서는 10진수면 충분하지만, 컴퓨터는 0과 1밖에 모른다. 그래서 2진수가 존재한다. 2진수는 자릿수가 길어지니까 4비트씩 묶어서 16진수로 줄여 쓴다. 파일 권한 설정에서는 8진수(chmod 755 같은)를 쓴다. 결국 같은 숫자를 상황에 맞게 다른 방식으로 표현하는 것뿐이다.

진법 변환 원리

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으로 나눈다. 나머지가 10 이상이면 A(10), B(11), C(12), D(13), E(14), F(15)로 표기한다. 255를 16으로 나누면 15(F) 나머지 15(F), 결과는 FF다.

예시 10진수 200을 각 진법으로 변환하면?
→ 2진수: 11001000
→ 8진수: 310
→ 16진수: C8

자주 쓰는 진법 변환표

0부터 15까지는 16진수의 기본 단위이기 때문에 외워두면 편하다.

10진수2진수8진수16진수
0000000
1000111
5010155
81000108
10101012A
15111117F
16100002010
25511111111377FF

실전에서 쓰이는 곳

  • 색상 코드: CSS의 #FF0000은 16진수다. R(FF=255), G(00=0), B(00=0)으로 빨간색.
  • 파일 권한: 리눅스에서 chmod 755는 8진수. 소유자 7(rwx), 그룹 5(r-x), 기타 5(r-x).
  • 메모리 주소: 디버깅할 때 나오는 0x7FFF 같은 값은 16진수 주소.
  • 네트워크: IP 서브넷 마스크를 2진수로 변환하면 네트워크 범위를 파악할 수 있다.

온라인에서 바로 변환하기

코딩 중에 진법 변환이 필요할 때마다 계산기를 꺼내는 건 번거롭다. 진법 변환기를 브라우저 탭에 하나 열어두면 입력하는 즉시 네 가지 진법 결과가 동시에 나온다. 2~36진법까지 사용자 정의 변환도 지원하고, ASCII 문자 코드 변환 기능도 있어서 개발 작업 중에 쓸 일이 많다.

진법 변환 원리 자체는 나눗셈의 반복이다. 원리를 이해해 두면 시험에서도, 실무에서도 막히지 않는다.