Endianness
Trang này sẽ giới thiệu ngắn gọn khái niệm và phân loại thứ tự byte.
Giới thiệu
Thứ tự byte là quy tắc lưu trữ của các đối tượng chương trình có nhiều byte, biểu thị cách sắp xếp các byte của một đối tượng.
Phân loại
Thứ tự byte có hai loại: little-endian (tiểu đầu) và big-endian (đại đầu).
Để tiện giới thiệu, xét một biến nằm tại 0x100, kiểu int, giá trị thập lục phân là 0x01234567. Trong đó 0x01 là byte có trọng số lớn nhất, 0x67 là byte có trọng số nhỏ nhất.
Little-endian
Little-endian là cách máy lưu trữ đối tượng trong bộ nhớ theo thứ tự từ byte có trọng số nhỏ nhất đến byte có trọng số lớn nhất.
Biến ở trên được biểu diễn như sau:
| .... | 0x100 | 0x101 | 0x102 | 0x103 | .... |
|---|---|---|---|---|---|
| .... | 67 | 45 | 23 | 01 | .... |
Big-endian
Big-endian là cách máy lưu trữ đối tượng trong bộ nhớ theo thứ tự từ byte có trọng số lớn nhất đến byte có trọng số nhỏ nhất.
Biến ở trên được biểu diễn như sau:
| .... | 0x100 | 0x101 | 0x102 | 0x103 | .... |
|---|---|---|---|---|---|
| .... | 01 | 23 | 45 | 67 | .... |
Sự khác nhau giữa hai thứ tự
Thực tế, hai thứ tự byte này không có ưu nhược điểm tuyệt đối. Tên gọi “little-endian” và “big-endian” xuất phát từ cuốn Gulliver’s Travels. Trong truyện, hai phe ở xứ người tí hon giao chiến không ngừng vì không thể thống nhất việc đập trứng từ đầu nhỏ hay đầu to. Tương tự như vậy, tranh luận về việc chọn thứ tự byte nào là vấn đề phi kỹ thuật.
Tuy nhiên, sự không nhất quán về thứ tự byte sẽ khiến dữ liệu nhị phân bị đảo thứ tự khi truyền giữa các loại máy khác nhau. Để tránh điều này, các ứng dụng mạng thiết lập một tiêu chuẩn, đảm bảo khi truyền sẽ dùng chuẩn mạng đã thỏa thuận thay vì biểu diễn nội bộ của từng máy.
Quy ước lựa chọn thứ tự
-
Little-endian: x86, các bộ xử lý ARM chạy Android, iOS và Windows
-
Big-endian: Sun, PPC Mac, Internet
Last updated on this page:, Update history
Found an error? Want to help improve? Edit this page on GitHub!
Contributors to this page:OI-wiki
All content on this page is provided under the terms of the CC BY-SA 4.0 and SATA license, additional terms may apply