왜 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비트(1바이트의 절반)를 나타냅니다.
| 비트 | 필요한 16진수 자릿수 |
|---|---|
| 4비트 (니블) | 16진수 1자리 |
| 8비트 (1바이트) | 16진수 2자리 |
| 16비트 (2바이트) | 16진수 4자리 |
| 32비트 (4바이트) | 16진수 8자리 |
| 64비트 (8바이트) | 16진수 16자리 |
같은 수, 세 가지 표현:
| 십진수 | 이진수 | 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.
직접 해보기
이 레슨에는 코드 챌린지가 없습니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
직접 연습해 보세요: Assembly 플레이그라운드
변환 결과 확인하기: 진법 변환기