유틸리티

진법 변환, 2진수 8진수 10진수 16진수 쉽게 바꾸는 법

프로그래밍 수업에서 "10진수 255를 2진수와 16진수로 바꿔보라"는 문제가 나왔다. 손으로 나누기를 반복해서 풀 수는 있는데, 자릿수가 커지면 실수가 잦고 검산도 어렵다.

진법이란

우리가 평소 쓰는 숫자 체계는 10진법이다. 0부터 9까지 열 개의 숫자를 쓰고, 9 다음에 자릿수가 올라간다. 컴퓨터에서는 이것 외에 2진법, 8진법, 16진법을 함께 사용한다.

진법사용 숫자주 용도
2진수0, 1컴퓨터 내부 연산, 비트 연산
8진수0~7유닉스 파일 권한(chmod 755)
10진수0~9일상적인 숫자 표기
16진수0~9, A~F메모리 주소, 색상 코드(#FF0000)

손으로 변환하는 방법

10진수 → 2진수

변환하고 싶은 숫자를 2로 계속 나누면서 나머지를 역순으로 읽는다.

예시 13 → 2진수
13 ÷ 2 = 6 나머지 1
6 ÷ 2 = 3 나머지 0
3 ÷ 2 = 1 나머지 1
1 ÷ 2 = 0 나머지 1
역순으로 읽으면: 1101

2진수 → 16진수

2진수를 오른쪽부터 4자리씩 묶어서 각각 16진수로 바꾸면 된다.

  • 1111 = F
  • 1010 = A
  • 0000 = 0

이 방법이 맞긴 하지만, 큰 숫자나 여러 개를 한꺼번에 변환해야 할 때는 시간이 오래 걸린다. 시험 검산용이나 실무에서 빠르게 확인할 때는 자동 변환 도구가 낫다.

자주 쓰이는 변환 예시

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

255가 2진수로 11111111(8비트 전부 1)이라는 건 외워두면 유용하다. IP 주소의 서브넷 마스크(255.255.255.0)나 RGB 색상의 최대값(255)과 직결되기 때문이다.

하나의 입력창에 숫자를 넣으면 2진수, 8진수, 10진수, 16진수가 동시에 나오는 온라인 진법 변환기가 있다. ASCII 문자 코드 변환까지 되니까 프로그래밍 공부할 때 참고 도구로 쓸 만하다.

원리를 이해하는 건 손 계산으로, 실전에서 빠르게 확인하는 건 도구로. 둘 다 필요하다.