Chinaunix首页 | 论坛 | 博客
  • 博客访问: 505551
  • 博文数量: 111
  • 博客积分: 3160
  • 博客等级: 中校
  • 技术积分: 1982
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-24 11:49
个人简介

低调、勤奋。

文章分类

全部博文(111)

文章存档

2014年(2)

2013年(26)

2012年(38)

2011年(18)

2010年(27)

分类: C/C++

2010-05-06 09:55:06

 举个例子来说名大小端:  比如一个int x, 地址为0x100, 它的值为0x1234567. 则它所占据的0x100, 0x101, 0x102, 0x103地址组织如下图:
一般情况下,x86的cpu为小端,powerpc为大端,怎样用程序判定大小端呢,
利用联合体的特点是最简单的,数据成员共享内存空间。
大端:低位字节存放在高位地址内
小端:高位字节存放在高位地址中

判断方法:
#include
int main(void)
{
union endian_un{
short var;
char bits[sizeof(short)];
};

union endian_un flag;

flag.var=0x0102;

if(sizeof(short)==2){
if(flag.bits[0]==1 && flag.bits[1]==2)
printf("judged by first method, big-endian\n");
else if(flag.bits[0]==2 && flag.bits[1]==1)
printf("judged by first method, little-endian\n");
else
printf("cannot determine the type\n");
}


return 0;
}


阅读(870) | 评论(0) | 转发(0) |
0

上一篇:常见内存测试题

下一篇:函数式宏定义

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