16진수는 어디에 쓰일까
웹을 다루다 보면 #ff8800 같은 색, 개발 도구에서 0x7fff 같은 주소,
문서에서 U+AC00 같은 글자 코드를 마주칩니다. 전부 16진수예요.
컴퓨터는 2진수로 도는데 왜 화면엔 자꾸 16진수가 보일까요? 답부터 말하면,
16진수는 2진수를 사람이 읽기 좋게 줄인 속기이기 때문입니다.
최종 업데이트: 2026년 7월
1. 왜 하필 16진수일까
컴퓨터 속 값은 2진수지만, 2진수는 자릿수가 너무 깁니다. 11111101처럼 여덟 자리씩
늘어지면 사람이 읽다가 실수하기 쉽죠. 그런데 여기 딱 맞는 규칙이 있습니다.
2진수 네 자리는 정확히 16진수 한 자리와 같습니다.
2진수 네 자리로 표현할 수 있는 경우의 수는 16가지(0000~1111, 즉 0~15). 16진수는 한 자리로 0~15를 표현하니, 둘이 완벽하게 짝지어집니다. 그래서 긴 2진수를 네 자리씩 끊어 한 글자로 바꾸면 훨씬 짧아져요.
| 2진수(4비트) | 16진수 | 2진수(4비트) | 16진수 |
|---|---|---|---|
| 0000 | 0 | 1000 | 8 |
| 0001 | 1 | 1001 | 9 |
| 0010 | 2 | 1010 | A |
| 0011 | 3 | 1011 | B |
| 0100 | 4 | 1100 | C |
| 0101 | 5 | 1101 | D |
| 0110 | 6 | 1110 | E |
| 0111 | 7 | 1111 | F |
예를 들어 11111101은 1111과 1101로 끊어 각각 F와 D,
즉 FD가 됩니다. 여덟 자리가 두 자리로 줄었죠.
2. 16진수 읽는 법 (A~F)
10진수는 0~9까지 열 개뿐인데, 16진수는 한 자리에 열여섯 가지를 담아야 합니다. 그래서 10부터 15까지를 알파벳 A~F로 적어요.
| 16진수 | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 10진수 | 10 | 11 | 12 | 13 | 14 | 15 |
자릿값은 16배씩 커집니다. 두 자리 16진수 FD라면 F(15)가 16의 자리, D(13)가 1의 자리이니
15 × 16 + 13 × 1 = 253. 앞 글에서 본 그 253이 맞습니다.
대소문자는 구분하지 않아서 ff와 FF는 같은 값이에요.
3. 색상 코드: #ff8800의 정체
웹에서 색은 빨강(R)·초록(G)·파랑(B)의 밝기를 각각 0~255로 섞어 만듭니다.
이 세 값을 16진수 두 자리씩 이어 붙인 게 #RRGGBB 표기예요.
| 부분 | 16진수 | 10진수(밝기) | 의미 |
|---|---|---|---|
| 빨강 RR | FF | 255 | 가장 밝게 |
| 초록 GG | 88 | 136 | 중간쯤 |
| 파랑 BB | 00 | 0 | 없음 |
그래서 #ff8800은 "빨강 가득 + 초록 중간 + 파랑 없음", 즉 진한 주황색입니다.
각 색을 0~255로 나눠 담으니 2진수 8비트 세 묶음(24비트)이고, 이걸 16진수로 적으면 딱 여섯 자리로
떨어집니다. #fff처럼 세 자리로 쓰기도 하는데, 이건 각 자리를 두 번 반복한
#ffffff(흰색)의 줄임 표기예요.
디자인 시안의 #ff8800을 코드에서 RGB 값 rgb(255, 136, 0)으로 바꿔야 할 때,
진법 변환기에 ff·88·00을 각각 넣으면
10진수 값이 바로 나옵니다.
4. 메모리 주소와 0x
프로그램이 오류를 낼 때 0x7ffee3b4 같은 값을 본 적 있을 겁니다. 앞의
0x는 "이건 16진수다"라는 표시이고, 뒤가 실제 값이에요.
메모리 주소를 16진수로 적는 이유도 앞과 같습니다. 주소는 결국 2진수인데 너무 길어서,
네 자리씩 묶어 16진수로 짧게 나타내는 거죠.
덤으로 16진수는 바이트 경계가 눈에 잘 보입니다. 16진수 두 자리가 정확히
1바이트(8비트)라서, 7f ff e3 b4처럼 두 글자씩 끊으면 바이트 단위가 그대로 드러납니다.
2진수·8진수 접두어도 있는데, 0b는 2진수, 0o는 8진수를 뜻합니다.
5. 유니코드: U+AC00
세상의 모든 글자에 번호를 매긴 표준이 유니코드입니다. 이 번호도 16진수로 적고, 앞에
U+를 붙여요. 예를 들어 한글 '가'는 U+AC00입니다.
AC00을 10진수로 바꾸면 44032예요. 즉 '가'는 유니코드에서 44032번째 자리에 있는
글자라는 뜻입니다. 이모지나 특수문자가 깨져 보일 때 "이 글자의 코드가 뭐지?"를 확인하려면
이 16진수 번호를 찾아보게 됩니다.
정리하면 16진수는 색·주소·글자 코드처럼 바탕이 2진수인 값을 사람이 다루는 곳마다 등장합니다. 2진수의 정확함과 사람의 읽기 편함, 둘 사이의 타협점인 셈이에요.
16진수 색 코드나 0x 값을 넣어 보세요. 10진수·2진수로 바로 펼쳐집니다.
6. 자주 묻는 질문
#ff8800에서 왜 여섯 자리인가요?
빨강·초록·파랑 세 가지 색을 각각 0~255로 표현하는데, 0~255는 16진수 두 자리로 딱 떨어집니다.
두 자리씩 세 색이니 여섯 자리가 됩니다. 각 자리가 같은 색은 #fff처럼 세 자리로
줄여 쓸 수 있습니다.
0x는 값의 일부인가요?
아니요. 0x는 "뒤에 오는 값이 16진수"라는 것을 알려 주는 표시일 뿐, 실제 숫자는
아닙니다. 마찬가지로 0b는 2진수, 0o는 8진수를 뜻합니다. 진법 변환기에
붙여넣으면 이 접두어를 자동으로 알아봅니다.
16진수 A~F는 대문자여야 하나요?
대소문자 아무거나 됩니다. ff와 FF는 같은 값이에요. 다만 색상 코드나
문서에서는 한 가지로 통일해 적는 편이 보기 좋습니다.