请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1


Posted in 面试题 onJuly 16, 2015
int checkCPU()
{
 {
  union w
  {
   int a;
   char b;
  } c;
  c.a = 1;
  return (c.b == 1);
 }
}
剖析:
嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,16bit宽的数0×1234在Little-endian模式CPU内存中的存放方式(假设从地址0×4000开始存放)为:
内存地址 存放内容
0×4000 0×34
0×4001 0×12
而在Big-endian模式CPU内存中的存放方式则为:
内存地址 存放内容
0×4000 0×12
0×4001 0×34
  32bit宽的数0×12345678在Little-endian模式CPU内存中的存放方式(假设从地址0×4000开始存放)为:
内存地址 存放内容
0×4000 0×78
0×4001 0×56
0×4002 0×34
0×4003 0×12
而在Big-endian模式CPU内存中的存放方式则为:
内存地址 存放内容
0×4000 0×12
0×4001 0×34
0×4002 0×56
0×4003 0×78
联合体union的存放顺序是所有成员都从低地址开始存放,面试者的解答利用该特性,轻松地获得了CPU对内存采用Little-endian还是Big-endian模式读写。如果谁能当场给出这个解答,那简直就是一个天才的程序员。

Tags in this post...

面试题 相关文章推荐
PHP面试题及答案一
Jun 18 面试题
什么是serialVersionUID
Mar 04 面试题
2019年Java面试必问之经典试题
Sep 12 面试题
DBA数据库管理员JAVA程序员架构师必看
Feb 07 面试题
介绍一下如何利用路径遍历进行攻击及如何防范
Jan 19 面试题
What's the difference between deep copy and shallow copy? (深拷贝与浅拷贝有什么区别)
Nov 10 面试题
C#如何允许一个类被继承但是避免这个类的方法被重载?
Feb 24 面试题
一些Unix笔试题和面试题
Jan 22 面试题
几个Linux面试题笔试题
Aug 01 面试题
Linux如何为某个操作添加别名
Feb 05 面试题
Java的类与C++的类有什么不同
Jan 18 面试题
北京振戎融通Java面试题
Sep 03 面试题
一套带答案的C++笔试题
Jan 10 #面试题
写一个方法1000的阶乘
Nov 21 #面试题
一套VC试题
Jan 23 #面试题
C语言50道问题
Oct 23 #面试题
普天C++笔试题
Mar 20 #面试题
华美博弈C/VC工程师笔试试题
Jul 16 #面试题
联想C++笔试题
Jun 13 #面试题
You might like
让PHP开发者事半功倍的十大技巧小结
2010/04/20 PHP
ecshop实现smtp发送邮件
2015/02/03 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
PHP类的自动加载机制实现方法分析
2019/01/10 PHP
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
jQuery之浮动窗口实现代码(两种方法)
2010/09/08 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
JavaScript定时显示广告代码分享
2015/03/02 Javascript
Angularjs制作简单的路由功能demo
2015/04/14 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
jquery滚动特效集锦
2015/06/03 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
jQuery easyui刷新当前tabs的方法
2016/09/23 Javascript
jquery实现表单获取短信验证码代码
2017/03/13 Javascript
AngularJS实现进度条功能示例
2017/07/05 Javascript
JS异步函数队列功能实例分析
2017/11/28 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
[46:55]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python字典快速保存于读取的方法
2018/03/23 Python
python保存文件方法小结
2018/07/27 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
OpenCV搞定腾讯滑块验证码的实现代码
2019/05/18 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
python 用Matplotlib作图中有多个Y轴
2020/11/28 Python
初中教师业务学习材料
2014/05/12 职场文书
扬尘污染防治方案
2014/06/15 职场文书
解除劳动关系协议书范文
2014/09/11 职场文书
2015年度考核个人工作总结
2015/10/24 职场文书
Python基础之元组与文件知识总结
2021/05/19 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
2022/05/04 Python