亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 871 | 回復(fù): 0
打印 上一主題 下一主題

我考察新人的兩道c語言題目(考察有一年嵌入式linux開發(fā)經(jīng)驗的人)(轉(zhuǎn)) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-10-27 23:45 |只看該作者 |倒序瀏覽
我考察新人的兩道c語言題目(考察有一年嵌入式linux開發(fā)經(jīng)驗的人)
我考察新人的兩道c語言題目(考察有一年嵌入式linux開發(fā)經(jīng)驗的人)

1> 如何判斷一個板子的cpu 是big-endian 還是 Little-endian的?
用c實現(xiàn)非常簡單,10行左右,就可以判斷了, 關(guān)鍵考察新人是否了解了什么是endian ,big-endian與little-endian的區(qū)別在哪里, 如果這些不清楚,就算c再強,也是憋不出來的。
2> 判斷了 endian 后, 如何進行轉(zhuǎn)換, 寫兩個函數(shù)。
如果說上面的那個, 可能不能正確的考察出新人的c水平,下面這個,可就可以顯示了。
尤其是寫一個宏, 來實現(xiàn)。 我覺得宏最能體現(xiàn)出一個人的水平了, 大家都知道一個功能強大的,但是寫法又
非常簡單的宏,是不好寫的。 尤其是注意類型轉(zhuǎn)換, 大擴號什么的。 寫一個函數(shù)就容易多了。
實現(xiàn)起來,或者 用宏,或者 用函數(shù)的形式, 都可以, 最好都試一下。
主要看的就是宏的使用。
比如:
寫成函數(shù)的形式:
typedef unsigned int u32 ;
typedef unsigned short u16 ;
u16 bswap16(u16);
u32 bswap32(u32);
寫成宏的形式:
#define BSWAP_16(x)
....
#define BSWAP_32(x)
....
比如: 0x1234 變成: 0x3412
或者: 0x12345678 變成 : 0x78563412
---
在下面的回復(fù)寫出來,就有點亂了, 干脆在這里鐵出來吧 ,格式比較好:
1》判斷endian的問題, 很簡單。
判斷endian :
#include
#include
int main(void)
{
      short int a = 0x1234;
      char *p = (char *)&a;
   
      printf("p=%#hhx\n",*p);
      if(*p == 0x34)
          printf("Little endian \n");
      else if(*p == 0x12)
          printf("Big endian \n");
      else
          printf("Unknow endian \n");
      return 0;
}
2>如何進行轉(zhuǎn)換:
#include
#include
typedef unsigned int u32;
typedef unsigned short u16;
#if 0
//simple: not check varible types
#define BSWAP_16(x) \
            ( (((x) & 0x00ff) > 8 ) \
       )
//complex:check varible types
#else
#define BSWAP_16(x) \
       (u16) ( ((((u16)(x)) & 0x00ff) > 8 ) \
            )
#endif
#define BSWAP_32(x) \
       (u32) ( (( ((u32)(x)) & 0xff000000 ) >> 24) | \
                      (( ((u32)(x)) & 0x00ff0000 ) >> 8 ) | \
       (( ((u32)(x)) & 0x0000ff00 ) > 8
      ;
}
u32 bswap32(u32 x)
{
      return       ( x & 0xff000000 ) >>24 |
          ( x & 0x00ff0000 ) >>8 |
          ( x & 0x0000ff00 ) 原文地址
http://hi.baidu.com/yhsky123/blog/item/79f5d835b8c2828fa71e126c.html


本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u3/104286/showart_2080463.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP