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