-
为什么会有大小端存储?
例如char类型是1字节,short类型2字节,int类型是4字节,在内存中存储以字节为单位。
如果现在有一个16进制的short类型数据0x1122,因为short类型是两个字节,那么就会牵扯到在高地址处存储高字节内容,还是在高地址处存储低字节内容的问题。 -
举个例子说明大小端是如何存储的?
大端存储,0x1122的低字节内容0x22存储到高地址处。
大端存储,0x1122的高字节内容0x11存储到低地址处。
小端存储,0x1122的低字节内容0x22存储到低地址处。
小端存储,0x1122的高字节内容0x11存储到高地址处。 -
如何知道编译器是大端还是小端?
#include <stdio.h>
int main()
{
//给i赋值1,如果是小端存储,低字节内容0x01就会存储在低地址处
//k以char*方式取i的低地址上的内容,如果取到的是0x01而不是0x00
//说明是小端存储
int i = 1;
int k = *((char*)&i);
if (k == 1)
{
printf("小端");
}
else
{
printf("大端");
}
}