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