한 문장으로 보는 16진수
16진수는 밑이 16인 위치 기수법입니다. 각 자리는 바로 오른쪽 자리보다 16배 큰 값을 가지며, 10부터 15까지의 값은 A부터 F까지의 알파벳으로 씁니다. 16진수임을 표시하기 위해 프로그래머는 0x1A(C, Java, JavaScript, Python), CSS 색상에는 #1A2B3C, 어셈블리에서는 1Ah, 수학에서는 1A₁₆처럼 씁니다.
0부터 15까지의 16진수
| 10진수 | 16진수 | 2진수 | 10진수 | 16진수 | 2진수 |
|---|---|---|---|---|---|
| 0 | 0 | 0000 | 8 | 8 | 1000 |
| 1 | 1 | 0001 | 9 | 9 | 1001 |
| 2 | 2 | 0010 | 10 | A | 1010 |
| 3 | 3 | 0011 | 11 | B | 1011 |
| 4 | 4 | 0100 | 12 | C | 1100 |
| 5 | 5 | 0101 | 13 | D | 1101 |
| 6 | 6 | 0110 | 14 | E | 1110 |
| 7 | 7 | 0111 | 15 | F | 1111 |
16진수로 수 세기
16진수는 10진수와 같은 방식으로 수를 세지만, 9가 아니라 F 다음에 자리올림이 일어납니다: … 8, 9, A, B, C, D, E, F, 10, 11 … 19, 1A … 1F, 20 … FF, 100. 여기서 10은 16을, 100은 16 × 16 = 256을 뜻합니다. 16진수 두 자리는 1바이트(00–FF = 0–255)를 나타내고, 네 자리는 FFFF = 65,535까지, 여덟 자리는 FFFFFFFF = 4,294,967,295까지 나타낼 수 있습니다.
컴퓨터가 16진수를 사용하는 이유
컴퓨터는 모든 데이터를 2진수로 저장하지만, 0과 1이 길게 늘어선 값은 사람이 읽기 어렵고 잘못 입력하기도 쉽습니다. 16 = 2⁴이므로 16진수 한 자리는 정확히 4비트(니블), 두 자리는 1바이트에 해당합니다. 16진수와 2진수는 한 자리씩 표를 보고 바꾸기만 하면 되고, 16진수로 쓰면 길이도 4분의 1로 줄어듭니다: 1101 1110 1010 1101은 간단히 DEAD입니다. 10진수는 2진수와 이런 깔끔한 관계가 없기 때문에 원시 데이터를 표기할 때는 거의 쓰이지 않습니다.
16진수와 10진수 상호 변환
- 16진수 → 10진수: 각 자리의 숫자에 해당 자리의 16 거듭제곱을 곱해 더합니다:
2F= 2 × 16 + 15 = 47,1A3F= 1 × 4096 + 10 × 256 + 3 × 16 + 15 = 6719. - 10진수 → 16진수: 16으로 반복해서 나누고 나머지를 거꾸로 읽습니다: 200 ÷ 16 = 12 나머지 8이고 12 = C이므로 200 =
C8입니다. - 16진수 → 2진수: 각 자리를 4비트로 바꿉니다:
2F=0010 1111.
Online Hex Converter의 변환기는 이 모든 과정을 즉시 계산하고 각 단계를 보여 줍니다.
16진수가 쓰이는 곳
- 웹 색상:
#FF6347은 빨강FF, 초록63, 파랑47입니다. - 메모리 주소: 디버거와 크래시 리포트는
0x7FFE5A3C같은 포인터를 표시합니다. - MAC 주소:
00:1A:2B:3C:4D:5E같은 6바이트 값으로 네트워크 카드를 식별합니다. - IPv6 주소: 16진수 네 자리씩 여덟 그룹으로 이루어지며, 예를 들면
2001:db8::1입니다. - 유니코드: 모든 문자에는 16진수 코드 포인트가 있습니다.
U+00E9는 é,U+1F600은 😀입니다. - 해시와 ID: SHA-256 해시는 16진수 64자이며, UUID와 Git 커밋 ID도 16진수로 표기합니다.
- 헥사 덤프: 헥사 에디터는 파일 내용을 바이트 단위로 보여 줍니다. 모든 PDF 파일은
25 50 44 46(“%PDF”)로 시작합니다. - 오류 코드: Windows는
0x80070005(액세스 거부) 같은 오류 코드를 표시합니다.
16진수, 10진수, 8진수, 2진수 비교
| 진법 | 밑 | 사용하는 숫자 | 255 표기 | 주요 용도 |
|---|---|---|---|---|
| 2진수 | 2 | 0–1 | 11111111 | 하드웨어, 비트 플래그 |
| 8진수 | 8 | 0–7 | 377 | Unix 파일 권한(chmod 755) |
| 10진수 | 10 | 0–9 | 255 | 일상적인 숫자 |
| 16진수 | 16 | 0–9, A–F | FF | 바이트, 색상, 주소, 해시 |
16진수의 음수 표현
16진수 자체에는 별도의 부호가 없으므로 음수는 보통 2의 보수로 저장합니다. 고정된 크기의 값에서 최상위 비트가 1이면 음수를 뜻합니다. 부호 있는 바이트로 보면 7F는 127, 80은 −128, FF는 −1이고, 32비트 정수에서는 FFFFFFFF가 −1입니다. 수학에서나 Online Hex Converter 계산기에서는 간단히 마이너스 기호를 붙여 쓸 수도 있습니다: −1A = −26.
자주 묻는 질문
16진수에는 왜 알파벳이 쓰이나요?
16진법에는 한 글자로 된 숫자 16개가 필요하지만 아라비아 숫자는 10개뿐입니다. 그래서 알파벳 A–F로 10–15의 값을 나타냅니다. 대문자와 소문자는 같은 의미입니다: ff = FF = 255.
숫자 앞의 0x는 무슨 뜻인가요?
C, C++, Java, JavaScript, Python 등 많은 언어에서 그 숫자가 16진수임을 나타냅니다. 0x10은 10이 아니라 16입니다. CSS에서는 색상에 #을 쓰고, 어셈블리 코드에서는 흔히 끝에 h를 붙입니다(10h).
16진수와 Base64는 같은 것인가요?
아니요. 16진수는 각 바이트를 0–9와 A–F 중 두 글자로 쓰므로 데이터 크기가 두 배가 되지만 바이트 단위로 읽기 쉽습니다. Base64는 64개 문자를 사용해 3바이트를 4글자로 담으므로 더 간결하지만(약 33% 증가) 바이트 단위로는 읽을 수 없습니다.
최종 업데이트: