Bảng tham chiếu chữ số hex
Mỗi chữ số thập lục phân tương ứng với một giá trị từ không đến mười lăm và với chính xác bốn chữ số nhị phân.
| Chữ số hex | Giá trị thập phân | Nhị phân (4 bit) |
|---|---|---|
| 0 | 0 | 0000 |
| 1 | 1 | 0001 |
| 4 | 4 | 0100 |
| 7 | 7 | 0111 |
| 9 | 9 | 1001 |
| A | 10 | 1010 |
| C | 12 | 1100 |
| F | 15 | 1111 |
- Đầu vào giới hạn ở 12 chữ số hex cho mỗi toán hạng, và kết quả phải nằm trong phạm vi số nguyên chính xác của số dấu phẩy động độ chính xác kép IEEE 754 (2⁵³ − 1); kết quả lớn hơn sẽ bị từ chối thay vì làm tròn.
- Phép trừ có thể cho kết quả âm, hiển thị bằng dấu trừ; không sử dụng biểu diễn bù hai (two's complement) ở đây.
Số học thập lục phân là gì?
Hệ thập lục phân là hệ đếm vị trí cơ số 16: mỗi vị trí chữ số đại diện cho một lũy thừa của 16, và mười sáu ký hiệu chữ số là 0–9 tiếp theo là A (mười), B (mười một), C (mười hai), D (mười ba), E (mười bốn) và F (mười lăm). Số hex 1A nghĩa là 1×16 + 10 = 26 trong hệ thập phân, và 2F nghĩa là 2×16 + 15 = 47.
Số học trong hệ thập lục phân tuân theo các quy tắc giống như số học thập phân, ngoại trừ việc nhớ và mượn xảy ra ở mức mười sáu thay vì mười. Cộng các chữ số hex A và F cho kết quả hai mươi lăm, tức là 19 trong hex — viết 9, nhớ 1. Hầu hết mọi người thấy dễ hơn khi chuyển sang thập phân, tính toán rồi chuyển ngược lại, và đó chính xác là cách máy tính này thực hiện bên trong.
Hệ thập lục phân có vai trò quan trọng trong ngành máy tính vì 16 = 2⁴: một chữ số hex ánh xạ chính xác với bốn chữ số nhị phân, nên một byte (8 bit) luôn là hai chữ số hex, từ 00 đến FF. Địa chỉ bộ nhớ, giá trị màu, checksum và dữ liệu byte thô thường được viết bằng hex, thường có tiền tố 0x.
Cách sử dụng máy tính hex này
- Nhập số thập lục phân thứ nhất (các chữ số 0–9 và A–F; chấp nhận tiền tố 0x tùy chọn).
- Chọn phép toán: cộng, trừ, nhân — hoặc chuyển đổi, chỉ dịch số thứ nhất.
- Với phép tính số học, nhập số hex thứ hai.
- Đọc kết quả ở dạng thập lục phân, thập phân và nhị phân. Ở chế độ chuyển đổi, kết quả hiển thị dạng thập phân và nhị phân của số thứ nhất.
Toán học đằng sau phép tính hex
Mỗi toán hạng được tính từng chữ số theo lũy thừa của 16 để có giá trị thập phân; phép toán được thực hiện trên các giá trị thập phân; kết quả sau đó được biểu diễn lại ở cơ số 16 bằng cách chia liên tiếp.
Ví dụ minh họa: 1A + 2F. Trong hệ thập phân, 1A = 26 và 2F = 47, nên tổng là 73. Chuyển ngược lại: 73 ÷ 16 = 4 dư 9, nên 73 = 49 trong hệ thập lục phân và 1001001 trong hệ nhị phân. Theo cột, điều tương tự xảy ra từng chữ số: A + F = 25 = 19₁₆, viết 9 nhớ 1; sau đó 1 + 2 + 1 = 4 — cho ra 49₁₆.
Lỗi thường gặp
- Nhớ ở mức mười thay vì mười sáu khi cộng các chữ số hex thủ công — A + F là 19₁₆ (viết 9, nhớ 1), không phải 25.
- Đọc số hex như số thập phân: 10₁₆ là mười sáu, không phải mười, và 100₁₆ là 256.
- Nhầm lẫn giữa chữ cái O với chữ số 0, hoặc chữ l thường với 1, khi chép lại giá trị hex.
- Quên rằng một byte luôn là hai chữ số hex — bỏ số 0 ở đầu (0x0F → F) không ảnh hưởng về mặt giá trị nhưng phá vỡ quy ước byte có độ rộng cố định.
Câu hỏi thường gặp
Làm thế nào để cộng hai số thập lục phân?
Cộng từng cột từ phải sang trái, giống hệt phép cộng thập phân, nhưng nhớ khi một cột đạt tới mười sáu. Với 1A + 2F: A (10) + F (15) = 25 = 16 + 9, nên viết 9 và nhớ 1; sau đó 1 + 2 + 1 = 4. Kết quả là 49 trong hex, tức 73 trong thập phân.
0x đứng trước một số có nghĩa là gì?
Tiền tố 0x đánh dấu một số là thập lục phân, phân biệt với số thập phân. Nó bắt nguồn từ ngôn ngữ lập trình C và nay gần như phổ biến khắp nơi: 0x1A nghĩa là hex 1A, tức 26 trong thập phân. Máy tính này chấp nhận đầu vào hex có hoặc không có tiền tố.
Làm thế nào để chuyển đổi hex sang thập phân?
Nhân giá trị của mỗi chữ số hex với lũy thừa của 16 tương ứng với vị trí của nó, đếm từ 0 ở bên phải, rồi cộng lại. Với 2F: 2×16 + 15×1 = 47. Với 1A3: 1×256 + 10×16 + 3×1 = 419. Các chữ cái A–F đại diện cho các giá trị từ 10 đến 15.
Làm thế nào để chuyển đổi hex sang nhị phân?
Thay mỗi chữ số hex bằng giá trị nhị phân 4 bit tương ứng: 2F trở thành 0010 1111. Cách rút gọn theo từng chữ số này hoạt động được vì 16 = 2⁴, nên không cần tính toán — đây là lý do chính khiến hệ thập lục phân được dùng làm ký hiệu rút gọn cho dữ liệu nhị phân.
Máy tính này có xử lý được số hex âm không?
Phép trừ có thể cho kết quả âm, hiển thị với dấu trừ ở đầu (ví dụ 5 − A = −5). Máy tính không sử dụng mã hóa bù hai (two's complement), quy ước độ rộng cố định mà bộ xử lý dùng nội bộ, trong đó cùng một mẫu bit có thể mang nghĩa là một giá trị không dấu lớn hoặc một giá trị âm có dấu.
Tài liệu tham khảo
- Knuth DE. The Art of Computer Programming, Volume 2: Seminumerical Algorithms, 3rd edition, Addison-Wesley, 1997 — radix arithmetic and conversion.
- IEEE Std 754-2019. IEEE Standard for Floating-Point Arithmetic — exact-integer limits of double precision.