判断CPU大小端
来源:互联网 发布:淘宝联盟电脑版 编辑:程序博客网 时间:2024/04/30 22:16
小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。
大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;
32bit宽的数0x12345678的存放方式(假设从地址0x4000开始存放)为:
Little-endian:
内存地址
0x4000
0x4001
0x4002
0x4003
存放内容
0x78
0x56
0x34
0x12
Big-endian:
内存地址
0x4000
0x4001
0x4002
0x4003
存放内容
0x12
0x34
0x56
0x78
存放int 型1的示意图:
Little-endian:
内存地址
0x4000
0x4001
0x4002
0x4003
存放内容
0x01
0x00
0x00
0x00
Big-endian:
内存地址
0x4000
0x4001
0x4002
0x4003
存放内容
0x00
0x00
0x00
0x01
int chkEndian() { union Tmp { int a; char b; } sys; sys.a = 1; return(sys.b == 1);}
返回0为大端,返回1为小端。
解释:联合体union的存放顺序是所有成员都从低地址开始存放。
方法2:
int x = 0x12345678;for (int i = 0; i < 4; i++) { <span style="font-family: Arial, Helvetica, sans-serif;">printf("0x%x 0x%p\n", *((char*)&x + i),((char*)&x + i));</span>}
AMD CPU跑的结果:
x86属于小端、ARM默认小端、网络字节序—大端
0 0
- CPU大小端判断
- 判断CPU大小端
- CPU大小端判断
- 判断cpu大小端
- 判断cpu大小端
- 判断CPU大小端
- 判断CPU大小端模式
- 判断CPU的大小端
- 判断CPU大小端存储
- 判断CPU的大小端
- 判断CPU的大小端
- 判断CPU的大小端
- CPU大小端的判断
- 判断cpu是大小端
- 判断CPU大小端模式
- 用union判断cpu的大小端
- 判断CPU大小端的函数
- 如何判断CPU的大小端
- hdoj1159Common Subsequence(LCS 最长公共子序列)
- DS18B20
- 使用OSGI+MQ的方式解决集中化运维问题
- HDU 1394 Minimum Inversion Number
- 邮件发送
- 判断CPU大小端
- codeforces 691C Exponential notation(思维 + 比较精妙的模拟)
- 【Android】Android Stdio创建App控件
- matlab文件夹前带加号表示是包package
- Struts2实现下载文件
- linux下的信号列表
- 个人网站 有兴趣的可以看看!
- Java中Runnable和Thread的区别
- spring配置 no matching editors or conversion strategy found 异常解决方案