大小端:
對於像C++中的char這樣的數據類型,它本身就是佔用一個字節的大小,不會產生什麼問題。但是當數制類型爲int,在32bit的系統中,它需要佔用4個字節(32bit),這個時候就會產生這4個字節在寄存器中的存放順序的問題。比如int maxHeight = 0x12345678,&maxHeight = 0x0042ffc4。具體的該怎麼存放呢?這個時候就需要理解計算機的大小端的原理了。
大端:(Big-Endian)就是把數值的高位字節放在內存的低位地址上,把數值的地位字節放在內存的高位地址上。
小端:(Little-Endian)就是把數字的高位字節放在高位的地址上,低位字節放在低位地址上。
我們常用的x86結構都是小端模式,而大部分DSP,ARM也是小端模式,不過有些ARM是可以選擇大小端模式。所以對於上面的maxHeight是應該以小端模式來存放,具體情況請看下面兩表。
地址 | 0x0042ffc4 | 0x0042ffc5 | 0x0042ffc6 | 0x0042ffc7 |
數值 |
0x78 |
0x56 |
0x34 |
0x12 |
地址 | 0x0042ffc4 | 0x0042ffc5 | 0x0042ffc6 | 0x0042ffc7 |
數值 |
0x12 |
0x34 |
0x56 |
0x78 |