유틸리티

진법 변환 정리, 2진수·8진수·10진수·16진수 쉽게 이해하기

프로그래밍 수업에서 갑자기 '10진수 255를 2진수와 16진수로 바꿔보세요'라는 문제가 나왔다. 진법 변환기 없이 손으로 풀려면 나누기를 반복해야 하는데, 16진수는 A부터 F까지 끼어들어서 머리가 복잡해진다.

진법이 여러 개인 이유

사람은 10진수가 편하지만, 컴퓨터는 전기 신호(켜짐/꺼짐)로 동작하기 때문에 2진수를 쓴다. 2진수가 너무 길어지면 읽기 어려우니까, 이걸 묶어서 표현하는 게 8진수(3비트)와 16진수(4비트)다.

진법사용 숫자쓰이는 곳
2진수0, 1컴퓨터 내부 연산, 비트 연산
8진수0~7리눅스 파일 권한(chmod 755)
10진수0~9일상 숫자 체계
16진수0~9, A~F메모리 주소, 색상 코드(#FF5733)

자주 쓰는 변환 예시

10진수를 2진수로 바꾸려면 2로 계속 나누면서 나머지를 거꾸로 읽으면 된다. 16진수는 16으로 나누고, 10 이상의 나머지를 A~F로 치환한다.

예시 10진수 200
→ 2진수: 11001000
→ 8진수: 310
→ 16진수: C8

2진수 11001000을 16진수로 바꿀 때는 뒤에서 4자리씩 끊으면 된다. 1100 = C, 1000 = 8이니까 C8. 이 규칙만 알면 2진수 ↔ 16진수는 빠르게 암산할 수 있다.

직접 계산이 번거로울 때

시험 공부 중이라면 원리를 알아야 하지만, 실무에서 매번 손으로 계산할 필요는 없다. 온라인 진법 변환기에 숫자를 넣으면 2진수, 8진수, 10진수, 16진수가 동시에 나온다. 2~36진법까지 커스텀 변환도 되고, 문자의 ASCII 코드도 확인할 수 있어서 개발 중에 참고하기 좋다.

진법 변환은 규칙 자체는 단순한데 자릿수가 커지면 실수가 잦다. 코드에 넣을 16진수 값이 맞는지 확인할 때 한 번 돌려보는 습관이면 충분하다.