大端模式(big-dndian)和小端模式(little-indian)
大端模式和小端模式是計算機採用位元組儲存機制的兩種方式(兩種位元組類)
首先我們要知道位元組序是什麼?位元組的順序就是位元組序。
①big-endian 是指高位位元組排放在記憶體的低位址端,低位位元組排放在記憶體的高位址端.
②little-endian就是低位位元組排放在記憶體的低位址端,高位位元組排放在記憶體的高位址端。
注:tcp/ip協議中將位元組序定義為大端模式
1.1用圖表的形式理解高低位址端
----------------------- 最高記憶體位址 0xffffffff棧底棧unsigned char buf[4] buf[ ]在記憶體中的存放如圖棧頂-----------------------
null (空洞)
-----------------------
堆-----------------------
未初始 化的資料
----------------------- 統稱資料段
初始化的資料
-----------------------
正 文段(**段)
----------------------- 最低記憶體位址 0x00000000
棧底 (高位址)
----------
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的機器採用這種規則,只是...