1. Bit và byte
Bit (bit) là đơn vị nhỏ nhất của dữ liệu trong hệ thống số, chỉ nhận một trong hai giá trị: 0 hoặc 1. Một dãy 8 bit tạo thành một byte. Vì vậy, giá trị lớn nhất có thể biểu diễn bằng một byte là 11111111 nhị phân — tương đương với 255 ở hệ thập phân.
Mỗi byte có khả năng lưu trữ chính xác một trong 256 giá trị khác nhau, từ 0 đến 255 (không dấu), hoặc từ −128 đến 127 (có dấu, dùng biểu diễn bù hai). Có thể hình dung byte như một ô nhớ gồm 8 vị trí riêng biệt, mỗi vị trí chứa đúng một bit.
2. Mã hóa ký tự
Hệ thống mã hóa ký tự phổ biến bao gồm ASCII và các chuẩn dựa trên Unicode như UTF-8, UTF-16, UTF-32.
ASCII sử dụng 7 bit để biểu diễn 128 ký tự cơ bản (chữ cái Latinh, chữ số, dấu câu và ký tự điều khiển). Mặc dù được định nghĩa trên 8 bit, bit cao nhất thường không được sử dụng — do đó ASCII hoàn toàn tương thích với byte đầu tiên của UTF-8.
Unicode mở rộng khái niệm này bằng cách gán cho mỗi ký tự một code point duy nhất, thường được viết dưới dạng U+XXXX, trong đó XXXX là số hexa 4 chữ số. Ví dụ: ký tự tiếng Trung "中" có code point U+4E2D.
Các sơ đồ mã hóa khác nhau chuyển code point thành chuỗi byte thực tế:
- UTF-8: mã hóa biến độ dài (1–4 byte). Ký tự ASCII chiếm 1 byte; ký tự CJK như "中" chiếm 3 byte:
0xE4 0xB8 0xAD. - UTF-16: chủ yếu dùng 2 byte, nhưng ký tự ngoài vùng BMP (Basic Multilingual Plane) cần 4 byte (surrogate pair).
- UTF-32: luôn dùng đúng 4 byte cho mọi ký tự — đơn giản nhưng tốn băng thông.
Ví dụ minh họa chuyển đổi:
// Ký tự 'A' (ASCII/UTF-8)
Hex: 0x41 → Binary: 0b01000001
// Giải thích: 4₁₆ = 0100₂, 1₁₆ = 0001₂ ⇒ ghép lại: 01000001// Ký tự '中' (Unicode code point U+4E2D)
Hex: 0x4E2D → Binary: 0b0100111000101101 (16-bit, zero-padded)
// UTF-8 encoding:
Byte 1: 0b11100100 → 0xE4
Byte 2: 0b10111000 → 0xB8
Byte 3: 0b10101101 → 0xAD
→ Dãy byte đầy đủ: 0xE4B8AD3. Quy tắc chuyển đổi giữa các hệ cơ số
Mỗi nhóm 4 bit tương ứng với một chữ số hexa:
// Từ nhị phân sang hexa:
Binary: 1110 0100 → E 4 → 0xE4
// Từ hexa sang nhị phân:
0xE4 → 1110 (E) + 0100 (4) → 0b111001004. Quy ước tiền tố theo ngữ cảnh
| Lĩnh vực | Tiền tố/Hậu tố | Ví dụ | Ghi chú |
|---|---|---|---|
| Ngôn ngữ lập trình (C, Java, Python...) | 0x |
0x4E2D |
Chuẩn ISO/IEC cho số hexa |
| Unicode Standard | U+ |
U+4E2D |
Chỉ định rõ đây là code point Unicode |
| Hợp ngữ (NASM, MASM) | h (hậu tố) |
4E2Dh |
Phổ biến trong môi trường x86 |
| Nhị phân trong mã nguồn hiện đại | 0b |
0b01000001 |
Hỗ trợ từ C++14, Python 2.6+, Rust... |
| Hợp ngữ (một số biến thể) | % (tiền tố) |
%1010 |
Dùng trong một số assembler như naken_asm |
Các quy ước khác:
0o755hoặc0755: số bát phân (octal)123: số thập phân (không tiền tố)- Trong HTML:
中(hex) hoặc中(dec) - Trong CSS:
\4E2D(không có0x, tối đa 6 ký tự hex) - Trong XML: giống HTML —
中