首頁  >  文章  >  大端模式和小端模式的差別是什麼?

大端模式和小端模式的差別是什麼?

青灯夜游
青灯夜游原創
2020-12-07 12:04:3545677瀏覽

區別:大端模式中字資料的高位元組儲存在低位址中,而字資料的低位元組則存放在高位址中;而與大端儲存模式相反,在小端儲存模式中,低位址中存放的是字資料的低字節,高位址存放的是字資料的高位元組。

大端模式和小端模式的差別是什麼?

本文操作環境:Windows7系統,Dell G3電腦。

相關推薦:《程式設計入門

大端模式與小端模式的差異

在C語言中除了8位的char型之外,還有16位的short型,32位的long型(要看具體的編譯器),對於位數大於8位的處理器,例如16位或是32位元的處理器,由於暫存器寬度大於一個位元組,那麼必然存在著如何將多個位元組安排的問題。因此就導致了大端儲存模式和小端儲存模式。

大端模式:

字資料的高位元組儲存在低位址中,而字資料的低位元組則存放在高位址中。

小端模式:

與大端儲存模式相反,在小端儲存模式中,低位址中存放的是字資料的低位元組,高位址存放的是字資料的高位元組。

例如,16位元寬的數0x1234在小端模式CPU記憶體中的存放方式(假設從位址0x4000開始存放)為:

記憶體位址

0x4000

0x4001

存放內容

0x34

0x12

而在大端模式CPU記憶體中的存放方式則為:

記憶體位址

0x4000

0x4001

存放內容

0x12

0x34

而在大端模式CPU記憶體中的存放方式則為:

##我們常用的X86結構是小端模式,而KEIL C51則為大端模式。很多的ARM,DSP都是小端模式。有些ARM處理器還可以由硬體來選擇是大端模式還是小端模式。

記憶體位址

0x4000

0x4001

##0x4002

#0x4003

存放內容

0x12

0x34

0x56

0x78

Note:採用大端方式進行資料存放符合人類的正常思維,而採用小端方式進行資料存放利於電腦處理。

(我的理解:小端模式在低位元組就放一個低位元)


#下面這段程式碼可以用來測試你的編譯器是大端模式還是小端模式:

int main()
{
short int x;
char x0,x1;
x=0x1122;
x0=*((char*)&x); //低地址单元 ,或者((char*)&x)[0];
x1=*((char*)&x + 1); //高地址单元,或者((char*)&x)[1];
printf("x0=%x\nx1=%x\n",x0,x1);
}

若x0=0x11,則是大端; 若x0=0x22,則是小端.....


想要查閱更多相關文章,請訪問

PHP中文網

! !

以上是大端模式和小端模式的差別是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn