您的位置:首页 > 其它

判断CPU大小端模式

2017-01-16 23:36 246 查看
int CheckCpuEndian(void)
{
union
{
int a;
char b;
}c;

c.a=1;

return (1 == c.b);
}

返回1为LittleEndian。

联合体union的存放顺序是所有成员都从 低地址 开始存放, 

若是小端模式,由低地址到高地址存放为0x01 00 00 00,c.b被赋值为0x01

CPU有两种字节序:Little endian 和Big endian

LittleEndian:低位字节数据存放于低地址;高位字节数据存放于高地址

BigEndian:低位字节数据存放于高地址;高位字节数据存放于低地址

对于数据0x12345678,在内存中存放的顺序如下:

LittleEndian:

地址:0x6000        0x6001          0x6002          0x6003

数据:  0x78            0x56                 0x34             0x12

BigEndian:

地址:0x6000        0x6001          0x6002          0x6003

数据:  0x12            0x34                0x56             0x78
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: