왜 16진법인가?
Coddy Assembly 여정의 기초 섹션에 포함된 레슨 — 45개 중 10번째.
이제 여러분은 컴퓨터가 이진수를 사용한다는 것을 알고 있습니다. 그렇다면 왜 어셈블리 프로그래머들은 이진수를 직접 작성하는 경우가 드문 것일까요?
이진수의 문제점:
이진수는 매우 깁니다. 다음 예시를 보세요:
| 숫자 | 이진수 |
|---|---|
| 255 | 11111111 |
| 1000 | 1111101000 |
| 65535 | 1111111111111111 |
1과 0의 긴 문자열을 작성하는 것은 느리고, 오류가 발생하기 쉬우며, 읽기 어렵습니다.
해결책: 16진수 (16진법).
16진수(또는 "hex")는 16개의 기호를 사용합니다:
| 기호 | 값 |
|---|---|
| 0-9 | 0 ~ 9 |
| A | 10 |
| B | 11 |
| C | 12 |
| D | 13 |
| E | 14 |
| F | 15 |
16진수가 컴퓨터에 완벽한 이유:
16진수 한 자리는 정확히 4비트(반 바이트)를 나타냅니다.
| 비트 | 필요한 16진수 자리수 |
|---|---|
| 4비트 (니블) | 16진수 1자리 |
| 8비트 (1바이트) | 16진수 2자리 |
| 16비트 (2바이트) | 16진수 4자리 |
| 32비트 (4바이트) | 16진수 8자리 |
| 64비트 (8바이트) | 16진수 16자리 |
같은 숫자, 세 가지 방식:
| 10진수 | 2진수 | 16진수 |
|---|---|---|
| 255 | 11111111 | FF |
| 1000 | 1111101000 | 3E8 |
| 65535 | 1111111111111111 | FFFF |
16진수가 2진수보다 얼마나 더 짧은지 확인해 보세요.
어셈블리에서 16진수를 볼 수 있는 곳:
- 메모리 주소 (
0x7FFF또는0x402000와 같은) - ASCII 코드 ('A'의 경우
0x41, 줄바꿈의 경우0x0a와 같은)
- 디버거에서의 레지스터 값
- 색상 값 (빨간색을 위한
0xFF0000과 같은)
16진수는 접두사와 함께 작성됩니다:
| 접두사 | 예시 | 의미 |
|---|---|---|
0x | 0xFF | 16진수 FF (10진수 255) |
$ | $FF | 동일함 (일부 어셈블러에서 사용됨) |
h | FFh | 동일함 (오래된 방식) |
이 과정에서는 0x 접두사를 사용합니다: 0x0a, 0x41, 0xFF.
직접 해보기
이 레슨에는 코드 챌린지가 없습니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.