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的存放方式為例,分別有以下幾種方式:
大端序
大端序 (英:big-endian)或稱大尾序 。
- 數據以8bit為單位 :
| 地址增長方向 ??→ | |||||
| 0x0A | 0x0B | 0x0C | 0x0D | ||
示例中,最高有效位 (MSB, Most Significant Byte)是0x0A 存儲在最低的內存地址處。下一個字節0x0B 存在后面的地址處。正類似于十六進制字節從左到右的閱讀順序。
- 數據以16bit為單位 :
| 地址增長方向 ??→ | |||||
| 0x0A0B | 0x0C0D | ||||
最高的16bit單元0x0A0B 存儲在低位。
小端序
小端序 (英:little-endian)或稱小尾序 。
- 數據以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 存儲在低位。
總結
- 上一篇: 光纤的熔接,光纤接续步骤小知识
- 下一篇: 如何在微信上面实现不需要会员注册实现会员