김 컴퓨터


컴퓨터 언어의 핵심: 16진수 (Hexadecimal)

16진수(Hexadecimal)는 0부터 9까지의 숫자와 A부터 F까지의 문자를 사용하여 값을 표현하는 수 체계(Base-16)입니다.

컴퓨터 하드웨어, 메모리 주소, 색상 코드(#FFFFFF) 등을 표현할 때 표준처럼 사용됩니다.


1. 왜 16진수를 쓰는가?

컴퓨터는 전기의 켜짐(1)과 꺼짐(0)인 2진수(Binary)만 이해합니다. 하지만 2진수는 자릿수가 너무 길어져 사람이 읽기 힘듭니다.

핵심 원리: 2진수 4비트(Bit)는 16진수 1자리와 완벽하게 1:1로 대응합니다. 이것이 하드웨어 제어에서 16진수를 쓰는 이유입니다.


2. 표기법 (Notation)

코딩(C, Python 등)에서는 이것이 10진수가 아닌 16진수임을 알리기 위해 앞에 접두어를 붙입니다.


3. 변환 테이블 (Conversion Tables)

① 10진수 ↔ 16진수 (Decimal to Hex)

우리가 쓰는 숫자와 컴퓨터의 16진수 비교입니다. 0~9는 같지만, 10부터 알파벳이 나옵니다.

10진수 (Decimal) 16진수 (Hex) 설명
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 A 10부터 알파벳 시작
11 B
12 C
13 D
14 E
15 F 4비트의 최대값

② 16진수 ↔ 2진수 (Hex to Binary) - ⭐ 가장 중요

임베디드 하드웨어를 제어할 때 이 패턴을 외우고 있으면 매우 유리합니다.

16진수 (Hex) 2진수 (Binary) 10진수 값
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
A 1010 10
B 1011 11
C 1100 12
D 1101 13
E 1110 14
F 1111 15

예시: 0x2F를 2진수로 바꾸면? 2 -> 0010 F -> 1111 결합: 0010 1111

1바이트 (2자리 16진수) ↔ 10진수 변환

2자리 16진수는 앞자리(16의 자리)뒷자리(1의 자리)로 구성됩니다. 공식: (앞자리 × 16) + 뒷자리

예: 0x2A = (2 × 16) + 10 = 42


1. 주요 값 변환표 (Key Milestones)

자주 쓰이는 값들의 기준점입니다.

16진수 (Hex) 10진수 (Dec) 설명
00 0 최소값 (Min)
01 1
0A 10
0F 15 앞자리 바뀌기 직전
10 16 $1 \times 16$
1F 31
20 32 $2 \times 16$ (공백 문자 ASCII)
32 50
40 64 $4 \times 16$
64 100 10진수 100
7F 127 부호 있는 정수(Signed) 최대값
80 128 부호 있는 정수 최소값 (-128)
A0 160
C8 200 10진수 200
FF 255 최대값 (Max, 8비트 모두 1)

2. 빠른 암산을 위한 앞자리 기준표

앞자리 숫자만 보고 대략적인 크기를 가늠하거나 계산할 때 유용합니다.

앞자리 (High Nibble) 값 ($N \times 16$)
0x 0
1x 16
2x 32
3x 48
4x 64
5x 80
6x 96
7x 112
8x 128
9x 144
Ax 160
Bx 176
Cx 192
Dx 208
Ex 224
Fx 240

활용법: 0xC2를 계산하고 싶다면? 1. 표에서 Cx192임을 확인. 2. 뒷자리 2를 더함. 3. 192 + 2 = 194