endian 簡介

endian詞源

endian ”一詞來源於喬納森·斯威夫特 的小說格列佛遊記 。小說中,小人國爲水煮蛋該從大的一端(Big-End)剝開還是小的一端(Little-End)剝開而爭論,爭論的雙方分別被稱爲Big-endians和Little-endians。

1980年,Danny Cohen 在其著名的論文"On Holy Wars and a Plea for Peace "中爲平息一場關於字節該以什麼樣的順序傳送的爭論而引用了該詞。

基本的字節序

對於單一的字節(a byte ),大部分處理器 以相同的順序處理位元 (bit),因此單字節的存放方法和傳輸方式一般相同。

對於多字節數據,如整數(32位機中一般佔4字節),在不同的處理器的存放方式主要有兩種,以內存中0x0A0B0C0D的存放方式爲例,分別有以下幾種方式:

注: 0x 前綴代表十六進制。

大端序

大端序 (英:big-endian)或稱大尾序

Big-Endian.svg
  • 數據以8bit爲單位 :
地址增長方向   →
... 0x0A 0x0B 0x0C 0x0D ...

示例中,最高有效位 (MSB, Most Significant Byte)是0x0A 存儲在最低的內存地址處。下一個字節0x0B 存在後面的地址處。正類似於十六進制字節從左到右的閱讀順序。

  • 數據以16bit爲單位 :
地址增長方向   →
... 0x0A0B 0x0C0D ...

最高的16bit單元0x0A0B 存儲在低位。

小端序

小端序 (英:little-endian)或稱小尾序

Little-Endian.svg
  • 數據以8bit爲單位 :
地址增長方向   →
... 0x0D 0x0C 0x0B 0x0A ...

最低有效位 (LSB,Least Significant Byte)是0x0D 存儲在最低的內存地址處。後面字節依次存在後面的地址處。

  • 數據以16bit爲單位 :
地址增長方向   →
... 0x0C0D 0x0A0B ...

最低的16bit單元0x0C0D 存儲在低位。

  • 更改地址的增長方向 :

當更改地址的增長方向,使之由右至左時,表格更具有可閱讀性。

←  地址增長方向
... 0x0A 0x0B 0x0C 0x0D ...

最低有效位(LSB)是0x0D 存儲在最低的內存地址處。後面字節依次存在後面的地址處。

←  地址增長方向
... 0x0A0B 0x0C0D ...

最低的16bit單元0x0C0D 存儲在低位。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章