<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM中的big-endian和little-endian

          ARM中的big-endian和little-endian

          作者: 時間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
          ARM體系中,每個字單元包含4個字節(jié)單元或者兩個半字單元。在字單元中,4個字節(jié)哪一個是高位字節(jié),哪一個是低位字節(jié)則有兩種不同的格式:big-endianlittle-endian格式。在小端模式中,低位字節(jié)放在低地址,高位字節(jié)放在高地址;在大端模式中,低位字節(jié)放在高地址,高位字節(jié)放在低地址。

          如果將一個32位的整數(shù)0x12345678存放到一個整型變量(int)中,這個整型變量采用大端或者小端模式在內(nèi)存中的存儲由下表所示。

          本文引用地址:http://www.ex-cimer.com/article/201611/319009.htm

          地址偏移

          大端模式

          小端模式

          0x00

          12(OP0)

          78(OP3)

          0x01

          34(OP1)

          56(OP2)

          0x02

          56(OP2)

          34(OP1)

          0x03

          78(OP3)

          12(OP0)

          如果將一個16位的整數(shù)0x1234存放到一個短整型變量(short)中。這個短整型變量在內(nèi)存中的存儲在大小端模式由下表所示。

          地址偏移

          大端模式

          小端模式

          0x00

          12(OP0)

          34(OP1)

          0x01

          34(OP1)

          12(OP0)

          由上表所知,采用大小模式對數(shù)據(jù)進行存放的主要區(qū)別在于在存放的字節(jié)順序,大端方式將高位存放在低地址,小端方式將低位存放在低地址。

          那么該如何判斷CPU是大端模式還是小端模式呢??

          在C語言中,聯(lián)合體union的存放順序是所有成員都從低地址開始存放的。利用這一特點,可以用聯(lián)合體變量判斷ARM或x86環(huán)境下,存儲系統(tǒng)是是大端還是小端模式。

          具體的代碼如下:

          #include "stdio.h"
          int main()
          {
          union w
          {
          int a; //4 bytes
          char b; //1 byte
          } c;
          c.a=1;
          if (c.b==1)
          printf("It is Little_endian!/n");
          else
          printf("It is Big_endian!/n");
          return 1;
          }



          關(guān)鍵詞: ARMbig-endianlittle-endia

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();