Chinaunix首页 | 论坛 | 博客
  • 博客访问: 450564
  • 博文数量: 362
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2015-07-26 17:08
文章分类

全部博文(362)

文章存档

2015年(362)

我的朋友

分类: C/C++

2015-12-10 23:52:20

原文地址:union是怎么判断处理器大小端 作者:

#include
int checkCPU()
{     union w
     {
      int a;
      char b;
      }c;
      c.a = 1;
      return (c.b == 1);
 }
void main()
{
printf("%d\n", checkCPU());
}
如果输出结果是1,就是小端的,如果是0,就是大端的。
C语言为共用体c分配了4个字节的内存空间,可以想象成4个格子,变量a占4个,变量b只占低地址的一个。
c.a = 1;赋值后,
如果是小端,则最低位地址的那个格子存放1,其它3个格子都存放0。(1即十六进制0001)
如果是大端,则最高位地址的那个格子存放1,其它3个格子都存放0。
补充一下大端模式和小端模式的定义:
大端模式:字数据的高字节存储在低地址中,字数据的低字节存储在高地址中。
小端模式:字数据的高字节存储在高地址中,字数据的低字节存储在低地址中。

阅读(1651) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~