little-endian and big endian

大小端:

   對於像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

                                                                                        圖(1)爲小端模式
 
地址 0x0042ffc4 0x0042ffc5 0x0042ffc6 0x0042ffc7
數值

0x12

0x34

0x56

0x78

                                                                                        圖(2)爲大端模式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章