一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

大小端模式

 心不留意外塵 2016-05-02

http://blog.sina.com.cn/s/blog_6a1837e90100y6mv.html

2012

 (大小端主要看數(shù)據(jù)的低位存儲(chǔ)在內(nèi)存中的位置,存儲(chǔ)在內(nèi)存的高位即為大端,低位則為小端。或者說,相反方向存儲(chǔ)則為大端,否則為小端

大端模式

  所謂的大端模式,是指數(shù)據(jù)的高位,保存在內(nèi)存的低地址中,而數(shù)據(jù)的低位,保存在內(nèi)存的高地址中,這樣的存儲(chǔ)模式有點(diǎn)兒類似于把數(shù)據(jù)當(dāng)作字符串順序處理:地址由小向大增加,而數(shù)據(jù)從高位往低位放;

  例子:   0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000   0000440: b484 6c4e 004e ed00 0000 0000 0100 0000   在大端模式下,前16位應(yīng)該這樣讀: e684   記憶方法: 地址的增長順序與值的增長順序相反

小端模式

  所謂的小端模式,是指數(shù)據(jù)的高位保存在內(nèi)存的高地址中,而數(shù)據(jù)的低位保存在內(nèi)存的低地址中,這種存儲(chǔ)模式將地址的高低和數(shù)據(jù)位權(quán)有效地結(jié)合起來,高地址部分權(quán)值高,低地址部分權(quán)值低,和我們的邏輯方法一致。   例子:   0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000   0000440: b484 6c4e 004e ed00 0000 0000 0100 0000   在小端模式下,前16位應(yīng)該這樣讀: 84e6   記憶方法: 地址的增長順序與值的增長順序相同

為什么有大小端模式之分

  為什么會(huì)有大小端模式之分呢?這是因?yàn)?font color="#0E0BFF">在計(jì)算機(jī)系統(tǒng)中,我們是以字節(jié)為單位的,每個(gè)地址單元都對(duì)應(yīng)著一個(gè)字節(jié),一個(gè)字節(jié)為 8bit。但是在C語言中除了8bit的char之外,還有16bit的short型,32bit的long型(要看具體的編譯器),另外,對(duì)于位數(shù)大于8位的處理器,例如16位或者32位的處理器,由于寄存器寬度大于一個(gè)字節(jié),那么必然存在著一個(gè)如何將多個(gè)字節(jié)安排的問題。因此就導(dǎo)致了大端存儲(chǔ)模式和小端存儲(chǔ)模式。例如一個(gè)16bit的short型x,在內(nèi)存中的地址為0x0010,x的值為0x1122,那么0x11為高字節(jié),0x22為低字節(jié)。對(duì)于 大端模式,就將0x11放在低地址中,即0x0010中,0x22放在高地址中,即0x0011中。小端模式,剛好相反。我們常用的X86結(jié)構(gòu)是小端模式,而KEIL C51則為大端模式。很多的ARM,DSP都為小端模式。有些ARM處理器還可以由硬件來選擇是大端模式還是小端模式。

測試編輯器屬哪種模式

  下面這段代碼可以用來測試一下你的編譯器是大端模式還是小端模式:short int x;   char x0,x1;   short x=0x1122;   x0=((char*)&x)[0]; //低地址單元   x1=((char*)&x)[1]; //高地址單元   若x0=0x11,則是大端; 若x0=0x22,則是小端......   上面的程序還可以看出,數(shù)據(jù)尋址時(shí),用的是低位字節(jié)的地址。

linux操作系統(tǒng)中對(duì)大小端的判斷:

  static union { char c[4]; unsigned long l; } endian_test = { { 'l', '?', '?', 'b' } };   #define ENDIANNESS ((char)endian_test.l)   (如果ENDIANNESS=’l’表示系統(tǒng)為little endian,為’b’表示big endian )。

使用C語言判斷處理器的大小端

  int checkCPU()   {       {           union w           {               int a;               char b;           } c;           c.a = 1;           return (c.b == 1);       }

  }

    返回1則為小端,否則為大端;

 

  2011年8月27日17:38:15 添加   測試大小端l   #include<stdio.h>   int main(void)   {       int a = 0x12345678;       unsigned char *p=(unsigned char *)&a;       if(0x78==*p)       {           printf("little end\n");       }       else       {           printf("bigend\n");       }       return0;   }   運(yùn)行環(huán)境:Linux root-desktop 2.6.32-24-generic #39-Ubuntu SMP Wed Jul 28 06:07:29 UTC 2010 i686 GNU/Linux          

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    欧美成人欧美一级乱黄| 日本最新不卡免费一区二区| 激情三级在线观看视频| 欧美一区二区三区喷汁尤物| 国产亚洲欧美另类久久久| 欧洲偷拍视频中文字幕| 日本一级特黄大片国产| 中国少妇精品偷拍视频| 91欧美亚洲精品在线观看| 麻豆最新出品国产精品| 久久精品国产一区久久久| 国产精品免费精品一区二区| 国产精品免费视频视频| 伊人天堂午夜精品草草网| 亚洲欧美日韩在线看片| 91人妻人人做人碰人人九色| 午夜视频免费观看成人| 亚洲中文字幕免费人妻| 亚洲中文在线中文字幕91| 内射精品欧美一区二区三区久久久| 99久只有精品免费视频播放| 五月婷婷综合缴情六月| 高清一区二区三区不卡免费| 日本加勒比在线播放一区| 日韩黄片大全免费在线看| 国产中文字幕一二三区| 亚洲中文字幕高清乱码毛片 | 美国女大兵激情豪放视频播放| 日韩综合国产欧美一区| 亚洲另类女同一二三区| 国产亚州欧美一区二区| 伊人久久五月天综合网| 午夜小视频成人免费看| 日韩欧美一区二区亚洲| 伊人久久五月天综合网| 国产91人妻精品一区二区三区| 国产精品内射视频免费| 国产精品一区二区三区欧美| 中文字幕乱子论一区二区三区| 国产精品国产亚洲区久久| 国产欧美精品对白性色|