유틸리티

10진수 2진수 16진수 변환, 진법 바꾸는 원리와 방법

프로그래밍 수업에서 "255를 2진수로 바꿔보세요"라는 문제가 나오면 손으로 나눗셈을 반복해야 한다. 진법 변환은 원리만 알면 단순한데, 자릿수가 커지면 실수가 잦다.

진법이 여러 개인 이유

컴퓨터는 0과 1만 이해한다(2진수). 그런데 2진수로 숫자를 표현하면 자릿수가 너무 길어진다. 그래서 2진수 4자리를 하나로 묶은 게 16진수, 3자리를 묶은 게 8진수다.

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

255가 2진수로 11111111(8자리)이 되는 걸 보면, 왜 16진수 FF가 더 간결한지 알 수 있다.

10진수를 2진수로 바꾸는 법

10진수를 2로 계속 나누면서 나머지를 아래에서 위로 읽으면 된다.

13 ÷ 2 = 6 ... 나머지 1
 6 ÷ 2 = 3 ... 나머지 0
 3 ÷ 2 = 1 ... 나머지 1
 1 ÷ 2 = 0 ... 나머지 1
→ 아래에서 위로 읽기: 1101

16진수로 바꿀 때는 2 대신 16으로 나누면 된다. 원리는 같지만 16진수는 10 이상이 A~F로 표기되니 그 부분만 주의하면 된다.

16진수와 2진수, 빠르게 바꾸는 요령

16진수 한 자리는 2진수 4자리와 정확히 대응한다. 이걸 외워두면 변환표 없이도 머릿속에서 바꿀 수 있다.

0~9
0=0000, 1=0001, 2=0010, ... 9=1001
A~F
A=1010, B=1011, C=1100, D=1101, E=1110, F=1111

예를 들어 16진수 3F는 0011(3) + 1111(F) = 00111111, 10진수로는 63이다.

참고 CSS 색상 코드 #FF5733도 16진수다. FF=255(빨강), 57=87(초록), 33=51(파랑)으로, 진법 변환을 알면 색상 코드의 의미도 읽을 수 있다.

손으로 나눗셈을 반복하다 한 자리 틀리면 전체 답이 달라진다. 시험이 아니라 실무에서 쓸 거라면 진법 변환기에 숫자 하나 넣고 2진수, 8진수, 16진수 결과를 동시에 확인하는 편이 실수를 줄인다. 2~36진법까지 지원하고, 문자를 ASCII 코드로 바꾸는 기능도 있어서 개발 작업 중에 간간이 꺼내 쓸 만하다.