關於位元組序的解釋

2021-04-19 01:25:25 字數 1256 閱讀 2658

位元組順序是指多位元組型別的資料在記憶體中的存放順序, 通常有小端(little endian)、大端(big endian)兩種位元組順序.

記憶體位址是由上到下有從左至右依次遞增的,小端位元組序指低位元組位資料存放在記憶體低位址處, 高位元組位資料存放在記憶體高位址處; 大端位元組序是高位元組資料存放在低位址處,低位元組資料存放在高位址處.

舉個例子, 比如數字0x1 2 3 4 5 6 7 8在兩種不同位元組序cpu中的儲存順序如下所示:

| |               | |

//               //

最高位       最低位

big endian(高位存低址 低位存高址)

低位址                              高位址

|  ----------------------------------------->

|  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|  |     12     |      34    |     56      |     78    |

|  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

/高位址

little endian(高位存高址 低位存低址)

低位址                              高位址

|  ----------------------------------------->

|  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|  |     78     |      56    |     34      |     12    |

|  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

/高位址

從上面兩圖可以看出, 採用big endian方式儲存資料更符合我們人類的思維習慣. 所有網路協議也都是採用big endian的方式來傳輸資料的. 所以有時我們也會把big endian方式稱之為網路位元組序.

談到位元組序的問題, 必然牽涉到兩大cpu派系. 那就是motorola的powerpc系列cpu和intel的x86系列cpu. powerpc系列採用big endian方式儲存資料, 而x86系列則採用little endian方式儲存資料.至於為什麼cpu解釋不同, 可能是由於不同的體系構架在起始競爭時人為地製造和對手不相容性......

關於大字節序和小字節序

大字節序 計算機體系結構中一種描述多位元組儲存順序的術語,在這種機制中最重要位元組 msb 存放在最低端的位址上。採用這種機制的處理器有ibm3700系列 pdp 10 mortolora微處理器系列和絕大多數的risc處理器。把高有效位放在低位址段,例如在按位元組定址的儲存器中往位址 0x0001...

關於網路位元組序和主機位元組序

什麼是位元組序?是指整數在記憶體中儲存的順序。位元組序有兩種 a.little endinan 低位儲存在記憶體的低位址,高位儲存在記憶體的高位址 b.big endian 高位儲存在記憶體的低位址,低位儲存在記憶體的高位址 舉個簡單的例子 dword dwcount 0x01020304 這樣的乙...

關於網路位元組序和主機位元組序

我們在進行網路程式設計的時候,有時候會遇到位元組序轉換的問題,為什麼呢?因為我們都知道計算機對於資料的儲存有兩種方式,一種是大端模式,一種是小端模式,但是我們資料在網路上傳輸都是大端模式,這是為了統一。當我們傳送端主機是小端模式時,我們要將主機的小端模式的位元組序轉換成網路的大端模式 當我們接收端主...