大端机和小端机的判断方法
来源:互联网 发布:金十数据是干什么的 编辑:程序博客网 时间:2024/06/05 16:19
若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1,实现代码如下:
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宽的数0x1234在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址 0x4000 0x4001
存放内容 0x34 0x12
而在Big-endian模式CPU内存中的存放方式则为:
内存地址 0x4000 0x4001
存放内容 0x12 0x34
32bit宽的数0x12345678在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址 0x4000 0x4001 0x4002 0x4003
存放内容 0x78 0x56 0x34 0x12
而在Big-endian模式CPU内存中的存放方式则为:
内存地址 0x4000 0x4001 0x4002 0x4003
存放内容 0x12 0x34 0x56 0x78
对于共用体应该熟悉:
1、共用体的定义和引用。
2、共用体变量的大小:最大乘员变量的大小。
3、共用体所有变量的起始地址都相同,即他们共享内存空间,但是一个时刻只能存一个共用体变量。
4、联合体union的存放顺序是所有成员都从低地址开始存放(即大端格式放),面试者的解答利用该特性,轻松地获得了CPU对内存采用Little-endian还是Big-endian模式读写。如果谁能当场给出这个解答,那简直就是一个天才的程序员。
- 大端机和小端机的判断方法
- 大端和小端的判断方法
- 判断小端机大端机
- 判断大端和小端2种不同的方法
- 判断机器大端小端的方法
- 大端小端的判断方法
- 判断大端小端存储的方法
- 大端小端的判断方法
- C++大端小段的判断和转换
- 大端机和小端机
- 大端机和小端机
- 判断大端小端的两种方法
- 大端机和小端机区别
- 关于大端和小端模式的判断
- 字节序(大端小端)的判断和转换
- 大端字节和小端字节的判断及转换
- 小端与大端的判断和转换
- 大端小端的判断
- C#两个datetable运用linq进行联合查询并写入新表
- 白领加薪升迁九大高招
- GPS偏移纠正(适用于Google地图)
- Linux 常用命令使用方法大搜刮
- makefile 中的PHONY
- 大端机和小端机的判断方法
- IE下getJSON不工作的解决办法
- SIFT算法详解
- 如何组织大型JavaScript应用中的代码?
- C++中四种类型转换以及const_cast是否能改变常量的问题
- PHP生成各种验证码和Ajax验证
- Hadoop基本操作命令
- 互联网 DBA 需要做那些事
- php中is_null,empty,isset,unset 的区别详细介绍