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

分享

判斷系統(tǒng)大小端方法分析與總結(jié)

 文心雕龍_01 2015-09-14

2011-03-09 wcdj

 

問題:如何用程序確認(rèn)當(dāng)前系統(tǒng)的存儲模式(大端還是小端)?寫一個C函數(shù),若處理器是Big-endian的,則返回0;若是Little-endian的,則返回1。

情況1:利用數(shù)組類型

情況2:利用位移運(yùn)算

 

上述方法正確嗎?要理解為什么不正確?

 

因為不要在數(shù)值上做文章,而大小端是嚴(yán)格與內(nèi)存掛鉤的東西。如果int a=1; 那么a&1==1一定成立,因為這是從數(shù)值角度運(yùn)算的,已經(jīng)給用戶屏蔽掉了大小端的問題。一定要int a=1; *((char*)(&a)) == 1 ,這樣判斷才有效。

下面總結(jié)一些有效的方法。

方法1:利用union類型 —— 可以利用union類型數(shù)據(jù)的特點(diǎn):所有成員的起始地址一致。

 

方法2:對int強(qiáng)制類型轉(zhuǎn)換

 

方法3:使用union和宏定義

 

補(bǔ)充:
大小端模式對union類型數(shù)據(jù)的影響。

 

分析如下圖所示:
高地址        低地址
—— —— —— ——   int
0   |   0   |  56  |  57   
—— —— —— ——
               —— ——   char
                56  |   57
               —— ——     
這里需要考慮存儲模式:大端模式和小端模式。
大端模式(Big-endian):數(shù)據(jù)的低字節(jié)存放在高地址中。
小端模式(Little-endian):數(shù)據(jù)的低字節(jié)存放在低地址中。
union型數(shù)據(jù)所占的空間等于其最大的成員所占的空間,對union型成員的存取都是相對于該聯(lián)合體基地址的偏移量為0處開始,即,聯(lián)合體的訪問不論對哪個變量的存取都是從union的首地址位置開始。因此,上面程序輸出的結(jié)果就顯而易見了。

 

 

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    少妇激情在线免费观看| 免费在线播放一区二区| 免费观看日韩一级黄色大片| 久久精品国产在热久久| 国产情侣激情在线对白| 亚洲一区二区久久观看| 亚洲精品欧美精品日韩精品| 国产一级一片内射视频在线| 麻豆剧果冻传媒一二三区| 午夜视频在线观看日韩| 国产精品午夜福利免费在线| 日韩欧美一区二区久久婷婷| 这里只有九九热精品视频| 中国日韩一级黄色大片| 国内精品美女福利av在线| 东北老熟妇全程露脸被内射| 97人妻人人揉人人躁人人| 国产精品日本女优在线观看| 青青操精品视频在线观看| 尤物天堂av一区二区| 午夜精品久久久免费视频| 中文字幕一区二区免费| 精品国产av一区二区三区不卡蜜 | 久久这里只精品免费福利| 少妇毛片一区二区三区| 中国一区二区三区人妻| 亚洲中文字幕三区四区| 99免费人成看国产片| 黄色片一区二区在线观看| 在线亚洲成人中文字幕高清| 深夜视频在线观看免费你懂| 欧美日韩国产精品第五页| 日韩三级黄色大片免费观看| 亚洲av熟女一区二区三区蜜桃| 日韩精品一区二区三区射精| 午夜精品麻豆视频91| 五月婷婷欧美中文字幕| av在线免费观看在线免费观看| 人妻少妇久久中文字幕久久| 亚洲二区欧美一区二区| 日韩一区二区三区有码|