计算机存储数据时,有两种模式:
1.大端(储存)模式,是指数据的低位保存在内存的高地址中;而数据的高位保存在内存的低地址中。
2.小端(储存)模式,是指数据的低位保存在内存的低地址中;而数据的高位保存在内存的低高址中。
内存是以二进制存储的,1个字节是8个比特,内存为了方便表示,就用了16进制来表示,2个16进制位表示8个比特,也就是一个字节。
比如一个整形,里面存储的数据是16进制的数字(int a = 0x11 22 33 44:int 占4个字节,两个16进制位刚好占一个字节,此时a的内存占据如下图所示)。
我们调试打开内存窗口,就可以得知当前计算机是以何种内存形式存储数据: 由于指针是连续访问内存的,就是从低地址逐个向高地址访问的,所以我们可以利用指针查看当前计算机是以何种方式存储数据的,就是判断大端还是小端存储。
我们直接利用字符型指针来访问整形。操作如下:
int check_sys()
{
int a = 1;
char* p = (char*)&a;
return *p;
//返回1小端
//返回0大端
}
int main()
{
int ret=check_sys();
if (ret == 1)
printf("小端\n");
else
printf("大端\n");
return 0;
}
改进一下:
int check_sys()
{
int a = 1;
return* (char*)&a;
//返回1小端
//返回0大端
}
int main()
{
int ret=check_sys();
if (ret == 1)
printf("小端\n");
else
printf("大端\n");
return 0;
}