Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1498775
  • 博文数量: 204
  • 博客积分: 4013
  • 博客等级: 中校
  • 技术积分: 4030
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-29 06:34
文章分类

全部博文(204)

文章存档

2012年(204)

分类: C/C++

2012-03-15 02:23:07

#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。
补充一下大端模式和小端模式的定义:
大端模式:字数据的高字节存储在低地址中,字数据的低字节存储在高地址中。
小端模式:字数据的高字节存储在高地址中,字数据的低字节存储在低地址中。

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