大端和小端(網絡字節序和主機字節序)

大端和小端(網絡字節序和主機字節序):
大端(Big Endian):即網絡字節序。
小端(Littile Endian):即主機字節序。

記憶方式:網絡的範圍很大,所以大端是網絡字節序。

大端方式將高位存放在低地址,小端方式將低位存放在高地址。
採用大端方式進行數據存放符合人類的正常思維,而採用小端方式進行數據存放利於計算機處理。

如果將一個32位的整數0x12345678存放到一個整型變量(int)中,這個整型變量採用大端或者小端模式在內存中的存儲由下表所示。
爲簡單起見,本書使用OP0表示一個32位數據的最高字節MSB(Most Significant Byte),使用OP3表示一個32位數據最低字節LSB(Least Significant Byte)。

---------------------------
地址偏移 大端模式 小端模式
0x00     12(OP0) 78(OP3)
0x01     34(OP1) 56(OP2)
0x02     56(OP2) 34(OP1)
0x03     78(OP3) 12(OP0)
---------------------------

如果將一個16位的整數0x1234存放到一個短整型變量(short)中。這個短整型變量在內存中的存儲在大小端模式由下表所示。

---------------------------------
地址偏移 大端模式 小端模式
0x00     12(OP0) 34(OP1)
0x01     34(OP1) 12(OP0)
-------------------------------------


不同的CPU上運行不同的操作系統,字節序也是不同的,參見下表。
處理器                 操作系統     字節排序
Alpha                 全部         Little endian
HP-PA                NT           Little endian
HP-PA                UNIX         Big endian
Intelx86            全部         Little endian <-----x86系統是小端字節序系統
Motorola680x() 全部         Big endian
MIPS                 NT           Little endian
MIPS                 UNIX         Big endian
PowerPC           NT           Little endian
PowerPC           非NT          Big endian   <-----PPC系統是大端字節序系統
RS/6000            UNIX          Big endian
SPARC               UNIX        

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