下载此文档

IT公司面试题总结(四).docx


文档分类:管理/人力资源 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
IT公司面试题总结(四).docx
试题1:请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,
则返回1
解答:
intcheckCPU()
union w
(
int a;
char b;
}c;

试题1:请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,
则返回1
解答:
intcheckCPU()
union w
(
int a;
char b;
}c;
= 1;
return ( == 1);
)
)
剖析:
嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian 模式的CPU对操作数的存放方式是从低字节到高字节,而Big-endian模式对操作数的存放 方式是从高字节到低字节。例如,16bit宽的数0x1234在Little- endian模式CPU内存中的 存放方式(假设从地址0x4000开始存放)为:
内存地址存放内容
0x4000 0x34
0x4001 0x12
而在Big-endian模式CPU内存中的存放方式则为:
内存地址存放内容
0x4000 0x12
0x4001 0x34
32bit宽的数0x12345678在Little-endian模式CPU内存中的存放方式(假设从地址
0x4000开始存放)为:
内存地址存放内容
0x4000 0x78
0x4001 0x56
0x4002 0x34
0x4003 0x12
而在Big-endian模式CPU内存中的存放方式则为:
内存地址存放内容
0x4000 0x12
0x4001 0x34
0x4002 0x56
0x4003 0x78
联合体union的存放顺序是所有成员都从低地址开始存放,面试者的解答利用该特性,
轻松地获得了 CPU对内存采用Little-endian还是Big-endian模式读写
试题2:写一个函数返回1+2+3+...+n的值(假定结果不会超过长整型变量的范围)
解答:
int Sum( int n )
(
return ((long)1 + n) * n / 2; 〃或 return (11 + n) * n / 2;
}
剖析:
对于这个题,只能说,也许最简单的答案就是最好的答案。下面的解答,或者基于下面的解 答思路去优化,不管怎么“折腾”,其效率也不可能与直接return ( 1 I + n ) * n / 2相比!
void swap(int a,int b)
(
a=aAb;
b=bAa;
a=aAb;
)
或者
void swap(int a, int b)
a=a+b;
b=a-b;
a=a-b;
)
不过这两种方法只是修改了函数的形参,如果要修改实参,可以采用如下的方法:
void swap(int* ajnt *b)
(
*a=*aA*b;
*b=*bA*a;
*a=*aA*b;

IT公司面试题总结(四) 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小雄
  • 文件大小83 KB
  • 时间2022-02-06
最近更新