c語言學習日記 大端和小端

2021-10-20 22:10:36 字數 1430 閱讀 7514

大端模式(big-dndian)和小端模式(little-indian)

大端模式和小端模式是計算機採用位元組儲存機制的兩種方式(兩種位元組類)

首先我們要知道位元組序是什麼?位元組的順序就是位元組序。

①big-endian 是指高位位元組排放在記憶體的低位址端,低位位元組排放在記憶體的高位址端.

②little-endian就是低位位元組排放在記憶體的低位址端,高位位元組排放在記憶體的高位址端。

注:tcp/ip協議中將位元組序定義為大端模式

1.1用圖表的形式理解高低位址端

----------------------- 最高記憶體位址 0xffffffff棧底棧

棧頂-----------------------

null (空洞)

-----------------------

堆-----------------------

未初始 化的資料

----------------------- 統稱資料段

初始化的資料

-----------------------

正 文段(**段)

----------------------- 最低記憶體位址 0x00000000

unsigned char buf[4]        buf[ ]在記憶體中的存放如圖

棧底 (高位址)

----------

buf[3]

buf[2]

buf[1]

buf[0]

----------

棧頂 (低位址)

1.2高低位元組如何理解:靠左邊的高位,靠右邊的是低位

以0x12345678為例從高位到低位的位元組依次是0x12、0x34、0x56和0x78

以unsigned int value = 0x12345678為例,分別看看在兩種位元組序下其儲存情況,我們可以用unsigned char buf[4]來表示value:

big-endian: 低位址存放高位,如下圖:

棧底 (高位址)

---------------

buf[3] (0x78) -- 低位

buf[2] (0x56)

buf[1] (0x34)

buf[0] (0x12) -- 高位

---------------

棧頂 (低位址)

little-endian: 低位址存放低位,如下圖:

棧底 (高位址)

---------------

buf[3] (0x12) -- 高位

buf[2] (0x34)

buf[1] (0x56)

buf[0] (0x78) -- 低位

C語言 大端小端

大端小端的存在是為了解決計算機內位元組儲存排列問題,很多arm,dsp,以及x86系統採用的是小端模式,而keil c51採用的是大端模式,一般作業系統採用小端模式,而通訊協議是大端的。例如 0x1234 0x1234低位址 高位址小端 3412 大端12 34 includeint main in...

大端和小端

1 小端與大端 對於乙個由2個位元組組成的16位整數,在記憶體中儲存這兩個位元組有兩種方法 一種是將低序位元組儲存在起始位址,這稱為小端 little endian 位元組序 另一種方法是將高序位元組儲存在起始位址,這稱為大端 big endian 位元組序。2 下面是兩個具體例子 記憶體位址 小端...

大端和小端

小端 little endian 儲存 在儲存器中按照最低有效位元組到最高有效位元組的順序儲存物件。大多數intel相容機採用這種規則。大端 big endian 規則 在儲存器中按照最高有效位元組到最低有效位元組的順序儲存物件。大多數ibm和sun microsystems的機器採用這種規則,只是...