區別:大端模式中字資料的高位元組儲存在低位址中,而字資料的低位元組則存放在高位址中;而與大端儲存模式相反,在小端儲存模式中,低位址中存放的是字資料的低字節,高位址存放的是字資料的高位元組。
本文操作環境: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記憶體中的存放方式則為:
記憶體位址 |
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中文網其他相關文章!