題目
數(shù)據(jù)的低位保存在內(nèi)存的高地址中,而數(shù)據(jù)的高位保存在內(nèi)存的低地址中稱之為大端模式(BE),而小端模式(LE)則反之。牛牛想知道??途W(wǎng)的后臺(tái)使用的是哪種模式,你能根據(jù)函數(shù)輸入的數(shù)據(jù)判斷嗎?
思路
反正都只是要測(cè)試后臺(tái)是大端還是小端,干脆忽略輸入n的值,直接把n賦值為1,因?yàn)閕nt有4個(gè)字節(jié),所以可以用char去截取內(nèi)存最低字節(jié),即把n強(qiáng)制轉(zhuǎn)換為char型(只有1個(gè)字節(jié))。
一個(gè)地址是8個(gè)字節(jié),n=1,如果是大端存儲(chǔ)為0x1000 0000 如果是小端存儲(chǔ)0x0000 0001
輸入輸出
輸入:
1
返回值:
1
//大端模式返回?cái)?shù)字0,小端模式返回?cái)?shù)字1,原題目描述有錯(cuò)誤
代碼展示
int judge(int n ) {
// write code here
n = 1;
return (char)n;
}
EP9嵌入式小端轉(zhuǎn)大端
題目
在學(xué)習(xí)機(jī)器的大小端表示后,牛牛又對(duì)兩種模式之間的相互轉(zhuǎn)換感興趣了?,F(xiàn)在牛牛輸入一個(gè)數(shù)字n,假設(shè)它是以小端模式保存在機(jī)器的,請(qǐng)將其轉(zhuǎn)換為大端方式保存時(shí)的值。
思路
以小端模式保存的,那1就保存為0x0000 0001 轉(zhuǎn)換為大端需要把最后一個(gè)字節(jié)放在最高位地址
代碼展示
int convert(int n ) {
// write code here
return (((n & 0xff000000) >>24 )|
((n & 0x00ff0000) >>8 )|
((n & 0x0000ff00)<< 8 ) |
((n & 0x000000ff)<< 24));
}
//相于運(yùn)算 n是int型 四個(gè)字節(jié) 16進(jìn)制0xff00 0000 相當(dāng)于32位二進(jìn)制
//(n & 0xff000000) >>24 最高的1個(gè)字節(jié)(ff)保留原樣 向右移6位 0x0000 00ff
//(n & 0x00ff0000) >>8 n的第3個(gè)字節(jié)保留,隨后向右移2位 0x0000 ff00
//(n & 0x0000ff00)<< 8 n的第2個(gè)字節(jié)保留,左移2位,0x00ff 0000
//(n & 0x000000ff)<< 24 n的第1個(gè)字節(jié)保留,左移6位,0xff00 0000
//方法二
int convert(int n ) {
// write code here
unsigned char a,b,c,d;
a = (char)n; //n是int型 取四個(gè)字節(jié)的最低位
b = (char)(n>>8);//把n的次低位移到最低位 又取
c = (char)(n>>16);
d = (char)(n>>24);
//a,b,c,d都是char型 只有一個(gè)字節(jié) 存儲(chǔ)的時(shí)候用0向左補(bǔ)齊 0x0000 00a 0x000 00b
n = (a<<24)+(b<<16)+(c<<8)+d; //把a(bǔ)的最低位移到最高位 b的
return n;
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
本文題目:EP8\EP9嵌入式機(jī)器的大小端-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://chinadenli.net/article30/cdheso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、靜態(tài)網(wǎng)站、網(wǎng)站排名、做網(wǎng)站、全網(wǎng)營(yíng)銷推廣、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容