關於位元組序的問題

2021-04-09 09:57:27 字數 2028 閱讀 4720

談到位元組序的問題,必然牽涉到兩大cpu派系。那就是motorola的powerpc系列cpu和intel的x86系列cpu。powerpc系列採用big endian方式儲存資料,而x86系列則採用little endian方式儲存資料。那麼究竟什麼是big endian,什麼又是little endian呢?

其實big endian是指低位址存放最高有效位元組(msb),而little endian則是低位址存放最低有效位元組(lsb)。

用文字說明可能比較抽象,下面用影象加以說明。比如數字0x12345678在兩種不同位元組序cpu中的儲存順序如下所示:

big endian

低位址                                            高位址

----------------------------------------->

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     12     |      34    |     56      |     78    |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

little endian

低位址                                            高位址

----------------------------------------->

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     78     |      56    |     34      |     12    |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

==================================

big endian machine: it thinks the first byte it reads is the biggest.

little endian machine: it thinks the first byte it reads is the littlest.

如果我們將0x1234abcd寫入到以0x0000開始的記憶體中,則結果為

big-endian     little-endian

0x0000     0x12              0xcd

0x0001     0x23              0xab

0x0002     0xab              0x34

0x0003     0xcd              0x12

x86系列cpu都是little-endian的位元組序.

==================================

「endian」這個詞出自《格列佛遊記》。小人國的內戰就源於吃雞蛋時是究竟從大頭(big-endian)敲開還是從小頭(little-endian)敲開,由此曾發生過六次叛亂,其中乙個皇帝送了命,另乙個丟了王位。

==================================

最高有效位(msb)

指二進位制中最高值的位元。在16位元的數字音訊中,其第1個位元便對16bit的字的數值有最大的影響。例如,在十進位制的15,389這一數字中,相當於萬數那1行(1)的數字便對數值的影響最大。比較與之相反的「最低有效位」(lsb)。

==================================

編者注:

以前看過的一本嵌入式的書裡面這樣描述:

little-endian: lsb first.

big-endian: msb first.

而msb和lsb是這個意思:

msb:most significant bit(byte)

lsb:least significant bit(byte)

程式訪問記憶體變數時,先讀的位元組應該是低位址的位元組。msb

first應該就是指先讀到的是「最高有效位元組」,即最高有效位元組儲存在低位址。lsb first就是最低有效位元組儲存在低位址。

關於位元組序問題

位元組序分為主機位元組序和網路位元組序。主機位元組序主要分為兩種 大端位元組序 big endian 和小端位元組序 little endian 不同的處理器架構,有不同的位元組序。執行在同一臺計算機上的程序相互通訊時,一般不用考慮位元組序問題。位元組序是乙個處理器架構特性,用於指示像整數這樣的大資...

關於大字節序和小字節序

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

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

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