유틸리티

진법 변환 방법 정리 (2진수, 8진수, 10진수, 16진수)

코딩 시험이나 정보처리기사 문제에서 "10진수 255를 16진수로 변환하시오" 같은 문제가 나온다. 나누기를 반복하는 풀이법을 배우긴 하지만, 실무에서는 도구로 바로 변환하는 경우가 대부분이다. 원리를 한 번 이해해두면 왜 그 결과가 나오는지도 자연스럽게 따라온다.

진법 4가지 한눈에 보기

진법사용 숫자주 사용처10진수 255 변환
2진수0, 1컴퓨터 내부 연산11111111
8진수0~7유닉스 파일 권한377
10진수0~9일상 생활255
16진수0~9, A~F메모리 주소, 색상 코드FF

컴퓨터는 모든 데이터를 2진수(0과 1)로 처리한다. 하지만 2진수는 자릿수가 길어서 사람이 읽기 불편하다. 그래서 16진수를 자주 쓰는데, 2진수 4자리가 16진수 1자리에 대응되기 때문에 변환이 간편하다.

10진수를 2진수로 바꾸는 원리

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

예시 10진수 13을 2진수로 변환
13 ÷ 2 = 6 ... 나머지 1
6 ÷ 2 = 3 ... 나머지 0
3 ÷ 2 = 1 ... 나머지 1
1 ÷ 2 = 0 ... 나머지 1
아래에서 위로 읽으면 → 1101

16진수도 같은 방식이다. 2 대신 16으로 나누고, 나머지가 10 이상이면 A(10), B(11), C(12), D(13), E(14), F(15)로 표기한다.

실무에서 자주 쓰는 변환

CSS 색상 코드
#FF5733처럼 16진수 6자리로 색을 표현한다. FF는 10진수 255, 57은 87, 33은 51이다. RGB(255, 87, 51)과 같은 색이다.
유닉스 파일 권한
chmod 755에서 7, 5, 5는 8진수다. 7을 2진수로 바꾸면 111(읽기+쓰기+실행), 5는 101(읽기+실행)이 된다.
메모리 주소
0x7FFF 같은 표기는 16진수 메모리 주소다. 디버깅할 때 16진수를 10진수로 바꿔야 할 때가 있다.
네트워크 서브넷 마스크
255.255.255.0을 2진수로 바꾸면 11111111.11111111.11111111.00000000이다. 서브넷 계산에서 2진수 변환이 필수다.

매번 손으로 나누기를 할 수는 없다. 온라인 진법 변환기에 숫자를 입력하면 2진수, 8진수, 10진수, 16진수가 동시에 표시된다. 2~36진법까지 사용자 정의도 되고, ASCII 문자 코드 변환도 가능하다.

외워두면 편한 변환표

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

진법 변환은 원리만 이해하면 어렵지 않다. 시험 풀이용이든 실무 검산용이든, 한 번 익혀두면 컴퓨터가 숫자를 다루는 방식이 명확하게 보인다.