2진수, 10진수, 16진수: 서로 바꾸는 방법

진법 변환은 마법처럼 보이지만 사실 늘 같은 원리예요. 각 자리의 숫자는 그 자리가 어디냐에 따라 값이 정해져요. 2진수와 10진수를 손으로 오가는 법, 16진수를 겁내지 않고 읽는 법, 텍스트를 비트로 바꾸는 법을 풀이 예시와 0~15 표로 알려 드려요.

업데이트:

자릿값 체계란

10진수 4,095에서 4는 4가 아니라 4,000이에요. 천의 자리에 있기 때문이에요. 각 자리는 숫자에 10의 거듭제곱(1, 10, 100, 1,000…)을 곱해요. 이것이 자릿값 체계이고, 진법(기수)은 쓰는 서로 다른 숫자의 개수예요. 10진법은 열 개를 써요.

2진수도 똑같지만 기수가 2예요. 0과 1만 있고 각 자리의 값은 바로 앞 자리의 두 배예요. 16진수는 기수가 16이에요. 열여섯 개의 숫자는 0~9와 알파벳 A~F이고, 각 자리의 값은 앞 자리의 16배예요. 회로는 꺼짐과 켜짐 두 가지 상태만 구별하면 되기 때문에 컴퓨터는 2진수로 동작하고, 16진수는 그 비트를 짧게 적는 방법이에요.

각 자리의 값이에요. 2의 거듭제곱을 128까지 외워 두면 계산 대부분이 쉬워져요.
자리 (오른쪽부터 왼쪽으로)2진수에서의 값16진수에서의 값
1번째11
2번째216
3번째4256
4번째84,096
5번째1665,536
6번째321,048,576
7번째6416,777,216
8번째128268,435,456

2진수를 10진수로, 손으로 바꾸기

각 숫자에 그 자리의 값을 붙이고, 1이 있는 자리의 값만 더해요. 1101로 해 볼게요. 오른쪽부터 왼쪽으로 자리 값은 1, 2, 4, 8이에요.

  1. 숫자를 쓰고 그 아래에 각 자리의 값을 적으세요. 1 1 0 1 아래에 8 4 2 1이에요.
  2. 각 자리에 무엇이 있는지 보세요. 8의 자리에 1, 4의 자리에 1, 2의 자리에 0, 1의 자리에 1이 있어요.
  3. 0이 있는 자리(여기서는 2의 자리)는 무시하세요.
  4. 더하세요. 8 + 4 + 0 + 1 = 13이에요. 그래서 2진수 1101은 10진수 13이에요.

자릿수가 더 많아도 똑같아요. 11111111은 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255로, 8비트에 담을 수 있는 가장 큰 값이에요. 10110110은 128 + 32 + 16 + 4 + 2 = 182예요.

10진수를 2진수로, 계속 나누기

수를 2로 계속 나누면서 나머지(항상 0 아니면 1)를 적어요. 몫이 0이 될 때까지 해요. 나머지를 아래에서 위로 읽으면 2진수가 돼요. 45로 해 볼게요.

나머지를 아래에서 위로 읽으면 101101이에요. 확인하려면 더해 보세요. 32 + 8 + 4 + 1 = 45예요.

많은 사람이 더 좋아하는 다른 방법도 있어요. 큰 2의 거듭제곱부터 차례로 빼는 방법이에요. 200이라면 128이 들어가고(72 남음), 64가 들어가고(8 남음), 32와 16은 안 들어가지만 8은 들어가요(0 남음). 쓰인 자리는 128, 64, 8이므로 200 = 11001000이에요.

16진수: 열여섯 개의 숫자와 곁에 두고 볼 표

10~15를 나타내는 숫자가 없으므로 알파벳 A, B, C, D, E, F를 써요. 16진수 한 자리는 정확히 4비트(니블)와 같아요. 그래서 편리해요. 8비트인 1바이트를 16진수 딱 두 자리로 쓸 수 있어요.

16진수를 10진수로 바꾸려면 각 숫자에 그 자리의 16의 거듭제곱을 곱해서 더하세요. 예를 들어 3F = 3 × 16 + 15 = 63이고 A3 = 10 × 16 + 3 = 163이에요.

도구에 표시되는 네 가지 진법으로 나타낸 0~15예요.
10진수2진수 (4비트)8진수16진수
0000000
1000111
2001022
3001133
4010044
5010155
6011066
7011177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F

16진수를 쓰는 이유: 바이트, 색상, 주소

1바이트는 8비트이고 0~255(00000000~11111111)까지예요. 비트를 손으로 쓰는 건 느리고 실수하기 쉬워요. 16진수로는 같은 바이트가 00~FF 두 글자예요. 2진수를 16진수로 바꾸려면 오른쪽부터 비트를 네 개씩 묶고 각 묶음을 표에 있는 숫자로 바꾸세요. 예를 들어 11010111은 1101과 0111로 나뉘고 각각 D와 7이므로 D7이에요. 10진수로는 13 × 16 + 7 = 215예요.

가장 잘 알려진 사례는 웹 색상이에요. #FF8800에는 바이트가 세 개 있어요. 빨강은 FF(255), 초록은 88(136), 파랑은 00(0)이에요. 빨강은 최대, 초록은 절반을 조금 넘고 파랑은 전혀 없는 선명한 주황색이에요. 16진수는 메모리 주소, 오류 코드, 네트워크 식별자에서도 볼 수 있어요.

ASCII로 텍스트를 2진수로

컴퓨터는 글자 하나하나를 숫자로 저장하고, 그 숫자를 비트로 저장해요. ASCII 표에서 A는 65이고 8비트 2진수로는 01000001이에요. 「Hi」는 두 글자예요. H는 72(01001000), i는 105(01101001)이므로 01001000 01101001이라고 써요. 「Hola」는 72, 111, 108, 97이고 2진수로 01001000 01101111 01101100 01100001, 16진수로는 48 6F 6C 61이에요.

이 도구는 UTF-8 인코딩을 써요. 영어 기본 글자는 글자 하나가 8비트 1바이트지만 ñ, 악센트 글자, 이모지는 여러 바이트를 차지해서 8비트보다 길어요. 한글은 글자 하나가 보통 3바이트예요. 예를 들어 ñ은 2바이트로 11000011 10110001(16진수로 C3 B1)이에요.

도구로 한 번에 해 보기

「2진수·10진수·16진수 변환기」는 손으로 한 계산을 확인하거나 긴 숫자를 실수 없이 풀 때 쓸 수 있어요.

  1. 해당 진법의 칸에 숫자를 입력하세요. 「10진수 (10진법)」, 「2진수 (2진법)」, 8진수, 「16진수 (16진법)」 중 하나예요. 나머지 세 칸은 자동으로 채워져요.
  2. 그 진법에 맞지 않는 숫자(2진수에 2를 입력하는 경우 등)를 쓰면 도구가 알려 줘요.
  3. 텍스트는 「텍스트」 칸에 입력하고 「2진수 (글자당 8비트)」와 바이트별 16진수를 확인하세요. 8비트씩 묶은 비트를 붙여 넣어 텍스트로 되돌릴 수도 있어요.
  4. 특이한 진법은 「모든 진법 (2~36)」을 쓰세요. 변환 전 진법, 변환 후 진법, 숫자를 고르면 돼요.

한계도 있어요. 음수가 아닌 정수만 변환하고(소수점이나 부호 없이), 앞에 0을 자동으로 채워 주지 않아요. 8비트 고정이 필요하다면 직접 채워야 해요(13은 00001101). 입력한 내용은 브라우저 밖으로 나가지 않아요.

자주 하는 실수

연습 문제와 풀이

답을 보기 전에 직접 풀어 보고, 풀고 나서 도구로 확인하세요.

자주 묻는 질문

2진수 1101을 10진수로 어떻게 바꾸나요?

1이 있는 자리의 값을 더해요. 8 + 4 + 1 = 13이에요. 오른쪽에서 두 번째 숫자는 0이라서 2는 더하지 않아요.

255는 2진수와 16진수로 얼마예요?

255는 2진수로 11111111, 16진수로 FF예요. 8비트 1바이트에 담을 수 있는 가장 큰 값이에요.

16진수는 왜 알파벳을 쓰나요?

서로 다른 기호가 열여섯 개 필요한데 10진법에서는 열 개(0~9)만 쓸 수 있기 때문이에요. 그래서 A는 10, B는 11, C는 12, D는 13, E는 14, F는 15예요.

8비트로 서로 다른 수를 몇 개 쓸 수 있나요?

0부터 255까지 256개예요. 일반적으로 n비트로는 2의 n제곱 개의 값을 나타낼 수 있어요.

도구가 음수나 소수도 변환하나요?

아니요, 음수가 아닌 정수만 변환해요. 텍스트는 UTF-8을 쓰기 때문에 악센트 글자와 이모지는 8비트보다 길게 나와요.