举个例子来说名大小端: 比如一个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) |