大小端模式的快速判斷方法

2021-07-03 15:23:17 字數 991 閱讀 3964

大小端的問題剖析:

嵌入式系統開發者應該對little-endian和big-endian模式非常了解。採用little-endian模式的cpu對運算元的存放方式是 從低位元組到高位元組,而big-endian模式對運算元的存放方式是從高位元組到低位元組。例如,16bit寬的數0x1234在little-endian 模式cpu記憶體中的存放方式(假設從位址0x4000開始存放)為:

記憶體位址

0x4000

0x4001

存放內容

0x34

0x12 而在

big-endian

模式cpu

記憶體中的存放方式則為:

記憶體位址

0x4000

0x4001

存放內容

0x12

0x34

我們常用的x86結構是小端模式,而keil c51則為大端模式。很多的arm,dsp都為小端模式。有些arm處理器還可以由硬體來選擇是大端模式還是小端模式。

以下這段**可以用來判斷當預處理器的大小端模式

#include

void main()

test =;

int i=0;

for(i=0;iprintf("test.j[%d] = 0x%x\n",i,test.j[i]);

}if(*p == 1)

else

}執行結果:

test.j[0] = 0xffffffef

test.j[1] = 0xffffffbe

test.j[2] = 0xffffffad

test.j[3] = 0xffffffde

little endian

大小端儲存問題,如果小端方式中(a 佔至少兩個位元組的長度)則 a 所分配的記憶體最小位址那個位元組中就存著1,其他位元組是0.大端的話則1在 a 的最高位址位元組處存放,char是乙個位元組,所以強制將char型量p指向a則p指向的一定是a的最低位址,那麼就可以判斷p中的值是不是1來確定是不是小端。

判斷大小端模式

學c語言時,了解過大小端模式,但是一直都每怎麼理解,對於網上查到的各種判斷大小端的程式也是看的一知半解。最近再次看到大小端這個問題時,終於感覺頓悟了。以下是我的理解,如有錯的地方請指出。大端模式,是指資料的高位元組儲存在記憶體的低位址中,而資料的低位元組儲存在記憶體的高位址中。小端模式,是指資料的高...

CPU的大小端模式以及判斷方法

不同體系結構的cpu,資料在記憶體中存放的排列順序是不一樣的。儲存器中對資料的儲存是以位元組 byte 為基本單位的,因此,字 word 和半字 half word 在儲存器中就有兩種次序,分別稱為 大端模式 big endian 和小端模式 little endian 大端儲存模式是指字或半字的最...

判斷系統大小端模式

端模式 endian 的這個詞出自jonathan swift書寫的 格列佛遊記 這本書根據將雞蛋敲開的方法不同將所有的人分為兩類,從圓頭開始將雞蛋敲開的人被歸為big endian,從尖頭開始將雞蛋敲開的人被歸為littile endian。小人國的內戰就源於吃雞蛋時是究竟從大頭 big endi...