下面的两个程序均可判断CPU的大小端问题
inti=1;
内存地址
|
0x4000
|
0x4001
|
存放内容
|
0x34
|
0x12
|
内存地址
|
0x4000
|
0x4001
|
存放内容
|
0x12
|
0x34
|
内存地址
|
0x4000
|
0x4001
|
0x4002
|
0x4003
|
存放内容
|
0x78
|
0x56
|
0x34
|
0x12
|
内存地址
|
0x4000
|
0x4001
|
0x4002
|
0x4003
|
存放内容
|
0x12
|
0x34
|
0x56
|
0x78
|
short int x;
char x0,x1;
x=0x1122;
x0=((char*)&x)[0]; //低地址单元
x1=((char*)&x)[1]; //高地址单元
若x0=0x11,则是大端; 若x0=0x22,则是小端......
上面的程序还可以看出,数据寻址时,用的是低位字节的地址。
补充三个方法
方法1:
高字节存储在高地址是小端,高字节存储在低地址是大端。
int main()
{
}
方法二:
联合体union的存放顺序是所有成员都从低地址开始存放
int main()
{
}
方法三
int
{
unsigned
p
num
*(BYTE
if(num
{
printf("The
}
else
{
printf("The
}
return
}