Vì sao dùng hệ thập lục phân?
Thuộc phần Kiến thức nền tảng trong hành trình Assembly của Coddy. Bài học 10 trên 45.
Bạn đã biết máy tính sử dụng hệ nhị phân. Vậy tại sao lập trình viên Assembly hiếm khi viết trực tiếp bằng hệ nhị phân?
Vấn đề với hệ nhị phân:
Số nhị phân rất dài. Hãy xem ví dụ này:
| Số | Hệ nhị phân |
|---|---|
| 255 | 11111111 |
| 1000 | 1111101000 |
| 65535 | 1111111111111111 |
Viết những chuỗi dài gồm các số 1 và 0 rất chậm, dễ mắc lỗi và khó đọc.
Lời giải: hệ thập lục phân (cơ số 16).
Hệ thập lục phân (hay “hex”) dùng 16 ký hiệu:
| Chữ số | Giá trị |
|---|---|
| 0-9 | 0 đến 9 |
| A | 10 |
| B | 11 |
| C | 12 |
| D | 13 |
| E | 14 |
| F | 15 |
Vì sao hệ thập lục phân phù hợp hoàn hảo với máy tính:
Một chữ số hệ thập lục phân biểu diễn chính xác 4 bit (nửa byte).
| Bit | Số chữ số hệ thập lục phân cần dùng |
|---|---|
| 4 bit (nibble) | 1 chữ số hệ thập lục phân |
| 8 bit (1 byte) | 2 chữ số hệ thập lục phân |
| 16 bit (2 byte) | 4 chữ số hệ thập lục phân |
| 32 bit (4 byte) | 8 chữ số hệ thập lục phân |
| 64 bit (8 byte) | 16 chữ số hệ thập lục phân |
Cùng một số, ba cách biểu diễn:
| Thập phân | Nhị phân | Thập lục phân |
|---|---|---|
| 255 | 11111111 | FF |
| 1000 | 1111101000 | 3E8 |
| 65535 | 1111111111111111 | FFFF |
Hãy chú ý xem hệ thập lục phân ngắn hơn hệ nhị phân nhiều như thế nào.
Nơi bạn sẽ thấy hệ thập lục phân trong assembly:
- Địa chỉ bộ nhớ (như
0x7FFFhoặc0x402000) - Mã ASCII (như
0x41cho 'A',0x0acho ký tự xuống dòng)
- Giá trị thanh ghi trong trình gỡ lỗi
- Giá trị màu (như
0xFF0000cho màu đỏ)
Số thập lục phân được viết với tiền tố:
| Tiền tố | Ví dụ | Ý nghĩa |
|---|---|---|
0x | 0xFF | FF ở hệ thập lục phân (255 ở hệ thập phân) |
$ | $FF | Tương tự (được dùng trong một số trình hợp dịch) |
h | FFh | Tương tự (kiểu viết cũ hơn) |
Trong khóa học này, chúng ta dùng tiền tố 0x: 0x0a, 0x41, 0xFF.
Tự làm thử
Bài học này không có thử thách code.
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức nền tảng
Tự luyện tập: Playground Assembly
Kiểm tra một phép chuyển đổi: Công cụ chuyển đổi hệ cơ số