字節順序
編輯(了解如何以及何時刪除此模板消息)
在計算中,字節順序,也稱為字節性別,是計算機內存中數字數據字的字節順序或序列。 字節順序主要表示為大端(BE)或小端(LE)。 big-endian 系統將一個字的最高有效字節存儲在最小的內存地址中,將最低有效字節存儲在xxx的內存地址中。 相反,小端系統將最低有效字節存儲在最小地址。 雙端是許多計算機體系結構支持的功能,這些體系結構在數據獲取和存儲或指令獲取中具有可切換的字節順序。其他順序通常稱為中間字節序或混合字節序。
字節順序也可以用來描述位在通信信道上傳輸的順序,例如,通信信道中的大端先傳輸最高有效位。 在其他情況下很少使用位字節序。
詞源
編輯Danny Cohen 在 1980 年發表的 Internet Experiment Note 中將術語 big-endian 和 little-endian 引入計算機科學中用于數據排序。
形容詞 endian 起源于 18 世紀英裔愛爾蘭作家喬納森·斯威夫特 (Jonathan Swift) 的作品。 在 1726 年的小說《格列佛游記》中,他描繪了小人國的教派之間的沖突,這些教派分為從大端或小端打破煮雞蛋的殼。 他稱它們為 Big-Endians 和 Little-Endians。 科恩在他 1980 年筆記的附錄中明確指出了與格列佛游記的聯系。
概覽
編輯計算機將信息存儲在各種大小的二進制位組中。 每個組都分配有一個編號,稱為其地址,計算機使用該編號訪問該數據。 在大多數現代計算機上,具有地址的最小數據組為八位長,稱為字節。 較大的組包含兩個或更多字節,例如,一個 32 位字包含四個字節。 計算機可以通過兩種可能的方式對較大組中的各個字節進行編號,從兩端開始。 這兩種類型的字節順序都廣泛用于數字電子工程。 新設計的初始字節序選擇通常是任意的,但后來的技術修訂和更新會延續現有的字節序以保持向后兼容性。
在內部,任何給定的計算機都將同樣良好地工作,而不管它使用什么字節序,因為它的硬件將始終使用相同的字節序來存儲和加載其數據。 出于這個原因,程序員和計算機用戶通常會忽略他們正在使用的計算機的字節順序。 然而,當將數據移動到計算機外部時,字節順序可能會成為一個問題——例如在不同計算機之間傳輸數據,或者程序員從內存轉儲中調查計算機內部數據字節——并且使用的字節順序與預期不同。 在這些情況下,必須理解和說明數據的字節順序。
字節序示例
這兩張圖顯示了兩臺使用不同字節序的計算機如何存儲一個值為 0x0A0B0C0D 的 32 位(四字節)整數。 在這兩種情況下,整數都被分成四個字節,0x0A、0x0B、0x0C 和 0x0D,這些字節存儲在內存中的四個連續字節位置,從地址為 a 的內存位置開始,然后是 a + 1,a + 2,和a+3。big endian和little endian的區別在于整數的四個字節的存儲順序。
左圖顯示了一臺使用大端字節序的計算機。 這將從地址 a 處的最高有效字節 0x0A 開始存儲整數,并以地址 a + 3 處的最低有效字節 0x0D 結束。
右圖顯示了一臺使用小端字節序的計算機。 這從地址 a 處的最低有效字節 0x0D 開始存儲整數,并以地址 a + 3 處的最高有效字節 0x0A 結束。
由于每臺計算機都使用相同的字節序來存儲和檢索整數,因此兩臺計算機的結果將相同。 當內存由字節而不是整數尋址時,或者當內存內容在具有不同字節順序的計算機之間傳輸時,可能會出現問題。
Big-endianness 是網絡協議中的主要順序,例如在 Internet 協議套件中,它被稱為網絡順序,首先傳輸最高有效字節。 相反,小端順序是處理器架構(x86、大多數 ARM 實現、基本 RISC-V 實現)及其相關內存的主要順序。 文件格式可以使用任一排序; 一些格式使用兩者的混合或包含在整個文件中使用哪種排序的指示符。
little-endian 和 big-endian 的樣式也可以更普遍地用于表征任何表示的順序,例如 數字系統中的數字或日期的部分。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/197294/