您的位置:首页 > 编程语言 > C语言/C++

【C语言】大小端的问题

2011-04-27 08:44 302 查看
在计算机中数据一般都先存在内存中,(拿32位机来说)系统为内存的每一个位置都分配了一个地址.地址
从0x00000000开始到0xffffffff(也许你的内存没这么大).
那么对于小端(Little-Endain)来说,数据0x12345678在内存中的映像就是这个样子的:
________
78 0x00000000
56 0x00000001
34 0x00000002
12 0x00000003
也就是说小端是低位数据放在低地址,像i386(x86)就是这种处理器.
而大端正好相反:
________
12 0x00000000
34 0x00000001
56 0x00000002
78 0x00000003
也就是说大端是低位数据放在低地址,像SuperH4就是这种处理器.
测试大小端代码:

void main()
{
int IsBigLitEnd(void);
int a;
a = IsBigLitEnd();
if(1==a)
{
printf("当前系统为大端对齐!/n");
}
else if(0 == a)
{
printf("当前系统为小端对齐!/n");
}
else
{
printf("出错!/n");
}
}
int IsBigLitEnd(void)
{
int wTest = 0x1234;
char* puTest = (char*)&wTest;
if (0x12 == puTest[0])
{
return 1; //大端对齐
}
else if(0x34 == puTest[0])
{
return 0; //小端对齐
}
else
{
return -1; //错误
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: