Chinaunix首页 | 论坛 | 博客
  • 博客访问: 307893
  • 博文数量: 20
  • 博客积分: 3011
  • 博客等级: 中校
  • 技术积分: 440
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-12 10:01
文章分类

全部博文(20)

文章存档

2008年(20)

我的朋友

分类: LINUX

2008-03-08 16:27:54

/*
若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
*/
#include
#include
#include
int check(void)
{
 union w
 {
 int a;
 char b;
 } c;
 c.a = 1;
 return (c.b == 1);
}
int main(int argc, char *argv[])
{
   
 if(check()==1)
  printf("little\n");
 else
  printf("big\n");
           return 0;
}
/*
嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,16bit宽的数0x1234在Little- endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址     存放内容
0x4000     0x34
0x4001     0x12
  而在Big-endian模式CPU内存中的存放方式则为:
内存地址     存放内容
0x4000     0x12
0x4001     0x34
  32bit宽的数0x12345678在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址     存放内容
0x4000     0x78
0x4001     0x56
0x4002     0x34
0x4003     0x12
  而在Big-endian模式CPU内存中的存放方式则为:
内存地址     存放内容
0x4000     0x12
0x4001     0x34
0x4002     0x56
0x4003     0x78
*/
阅读(1313) | 评论(0) | 转发(0) |
0

上一篇:一些经典的例子

下一篇:数组名总结

给主人留下些什么吧!~~