#include <iostream>
using namespace std;
int checkCPU()
{
union w
{
int a;
char b;
}c;
c.a = 1;
return (c.b == 1);
}
int main()
{
int ret = checkCPU();
return 0;
}
大端:高位存放在低地址,低位放在高地址
小端:高位存放在高地址,低位放在低地址
为什么用联合(union)?
因为在系统中联合保存数据从低地址开始保存,所以char类型拿到的是int类型的保存在低地址的值。
小端:
0x0001 0x0002 0x0003 0x0004 (地址) int
0x01 0x00 0x00 0x00 (数据)
0x01 (数据) char
大端:
0x0001 0x0002 0x0003 0x0004 (地址) int
0x00 0x00 0x00 0x01 (数据)
0x00 (数据) char