Công cụ
VI

Hệ thập lục phân là gì?

Hệ thập lục phân, hay hex, là hệ đếm cơ số 16. Hệ này viết số bằng 16 ký hiệu – 0–9 và A–F – và là cách viết gọn tiêu chuẩn cho dữ liệu nhị phân trong tin học, từ mã màu web đến địa chỉ bộ nhớ.

Hệ thập lục phân trong một câu

Hệ thập lục phân là hệ đếm theo vị trí với cơ số 16: mỗi chữ số có giá trị gấp 16 lần chữ số bên phải nó, và các giá trị từ 10 đến 15 được viết bằng các chữ cái A đến F. Để cho biết một số là hex, lập trình viên viết 0x1A (C, Java, JavaScript, Python), #1A2B3C cho màu CSS, 1Ah trong hợp ngữ (assembly) hoặc 1A₁₆ trong toán học.

Các chữ số hex từ 0 đến 15

Thập phânHexNhị phânThập phânHexNhị phân
000000881000
110001991001
22001010A1010
33001111B1011
44010012C1100
55010113D1101
66011014E1110
77011115F1111

Cách đếm trong hệ hex

Hệ hex đếm giống hệ thập phân nhưng sang hàng mới sau F thay vì sau 9: … 8, 9, A, B, C, D, E, F, 10, 11 … 19, 1A … 1F, 20 … FF, 100. Ở đây 10 nghĩa là mười sáu và 100 nghĩa là 16 × 16 = 256. Hai chữ số hex biểu diễn một byte (00–FF = 0–255), bốn chữ số lên đến FFFF = 65,535 và tám chữ số lên đến FFFFFFFF = 4,294,967,295.

Vì sao máy tính dùng hệ thập lục phân

Máy tính lưu mọi thứ ở dạng nhị phân, nhưng những dãy dài số 0 và 1 rất khó đọc với con người và dễ gõ nhầm. Vì 16 = 2⁴, một chữ số hex đại diện cho đúng bốn bit (một nibble) và hai chữ số hex cho một byte. Chuyển đổi giữa hex và nhị phân chỉ là tra từng chữ số, và hex ngắn hơn bốn lần: 1101 1110 1010 1101 chỉ là DEAD. Hệ thập phân không có mối liên hệ gọn gàng như vậy với hệ nhị phân, nên hiếm khi được dùng cho dữ liệu thô.

Chuyển hex sang thập phân và ngược lại

Các công cụ chuyển đổi của chúng tôi làm tất cả những việc này ngay lập tức và hiển thị từng bước.

Hệ thập lục phân được dùng ở đâu

So sánh hệ thập lục phân, thập phân, bát phân và nhị phân

Hệ đếmCơ sốChữ sốCách viết 255Ứng dụng điển hình
Nhị phân20–111111111Phần cứng, cờ bit
Bát phân80–7377Quyền truy cập file trên Unix (chmod 755)
Thập phân100–9255Số dùng hằng ngày
Thập lục phân160–9, A–FFFByte, mã màu, địa chỉ, mã băm

Số âm trong hệ hex

Bản thân hệ hex không có ký hiệu dấu riêng, nên số âm thường được lưu dưới dạng mã bù 2: bit cao nhất của một giá trị có kích thước cố định cho biết đó là số âm. Khi là byte có dấu, 7F là 127, 80 là −128 và FF là −1; khi là số nguyên 32 bit, FFFFFFFF là −1. Trong toán học và trong máy tính hex của chúng tôi, bạn cũng có thể chỉ cần viết dấu trừ: −1A = −26.

Câu hỏi thường gặp

Vì sao hệ thập lục phân dùng chữ cái?

Hệ cơ số 16 cần mười sáu chữ số, mỗi chữ số chỉ gồm một ký tự, nhưng ta chỉ có mười chữ số từ 0 đến 9. Các chữ cái A–F đại diện cho các giá trị 10–15. Chữ hoa và chữ thường có cùng ý nghĩa: ff = FF = 255.

0x ở trước một số có nghĩa là gì?

Nó đánh dấu số đó là số thập lục phân trong C, C++, Java, JavaScript, Python và nhiều ngôn ngữ khác: 0x10 là 16, không phải mười. CSS thì dùng # cho màu, còn mã hợp ngữ thường thêm hậu tố h (10h).

Hệ thập lục phân có giống Base64 không?

Không. Hex viết mỗi byte thành hai ký tự từ 0–9 và A–F, nên dữ liệu tăng gấp đôi kích thước nhưng vẫn dễ đọc theo từng byte. Base64 dùng 64 ký tự và gói 3 byte vào 4 ký tự, gọn hơn (chỉ tăng khoảng 33%) nhưng không đọc được theo từng byte.

Cập nhật lần cuối: