유틸리티

10진수 2진수 16진수 변환, 진법 변환 원리와 계산법

프로그래밍 수업에서 10진수 255를 2진수로 바꾸라는 문제가 나왔다. 2로 나누고 나머지를 적고, 다시 나누고를 반복하다 보면 어디서 실수했는지도 모르게 답이 틀린다. 16진수는 더 복잡하다. 진법 변환의 원리를 한 번 정리해두면 반복 계산에서 실수가 줄어든다.

진법이 왜 여러 개인가

사람은 10진수가 편하지만, 컴퓨터는 전기 신호의 켜짐/꺼짐 두 가지만 구분하니까 2진수를 쓴다. 16진수는 2진수를 짧게 표현하기 위해 만들어졌다. 2진수 8자리(11111111)를 16진수 2자리(FF)로 줄일 수 있어서, 메모리 주소나 색상 코드 같은 긴 값을 다룰 때 쓴다.

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

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

예시: 10진수 13

  1. 13 ÷ 2 = 6 나머지 1
  2. 6 ÷ 2 = 3 나머지 0
  3. 3 ÷ 2 = 1 나머지 1
  4. 1 ÷ 2 = 0 나머지 1

아래에서 위로 읽으면 1101. 10진수 13은 2진수로 1101이다.

16진수 변환은 4비트 묶음이 핵심

16진수는 0~9까지는 그대로 쓰고, 10~15를 A~F로 표기한다. 2진수를 16진수로 바꿀 때는 뒤에서부터 4자리씩 끊어서 변환하면 된다.

예시: 2진수 11111111

  • 뒤 4자리: 1111 → 15 → F
  • 앞 4자리: 1111 → 15 → F

결과: FF. 10진수 255 = 2진수 11111111 = 16진수 FF다.

개발에서 자주 쓰는 진법 변환표

10진수2진수16진수용도
000초기값
12711111117Fsigned byte 최대값
25511111111FFunsigned byte 최대값
2561000000001001바이트 초과 시작
1024100000000004001KB
655351111111111111111FFFF2바이트 최대값

손 계산이 번거롭거나 큰 숫자를 변환해야 할 때는 진법 변환기가 실수를 줄여준다. 10진수를 입력하면 2진수, 8진수, 16진수가 동시에 표시되고, 반대 방향 변환도 가능하다. 2~36진법까지 사용자 정의 변환도 지원한다.

원리를 한 번 이해해두면 디버깅이나 시험에서 당황하지 않는다. 자주 쓰는 값은 외워두고, 나머지는 변환기에 맡기는 게 현실적이다.