在计算机中数据的存储分为大端存储模式和小端存储模式,什么是大小端存储呢?我们通过一个int a = 1来举例说明。
一个int整型占内存中4byte,拿a来举例,如图所示:
在内存中地址就像一个一个的小块用来存放数据也分为高地址和低地址:
大端存储模式:
一个数据的低位字节序的内容存放在高地址处,高位字节序的内容存放在低地址处。
小端存储模式:
一个数据的低位字节序的内容存放在低地址处,高位字节序的内容存放在高地址处。
下面我们介绍两种方法判断自己使用的计算机是大端存储还是小端存储
1.强制类型转换
//判断当前计算机的大小端存储1
#include <stdio.h>
int main()
{ //高字节 低字节
int a = 1;//0x 00 00 00 01
//低地址———------------->高地址
//01 00 00 00 小端存储(低字节在低地址处)
//00 00 00 01 大端存储(低字节在高地址处)
char* pc = (char*)&a;
if (*pc == 1)
{
printf("小端存储\n");
}
else
{
printf("大端存储\n");
}
return 0;
}
2.联合体
//判断当前计算机的大小端存储2
#include <stdio.h>
int main()
{ //高字节 低字节
int a = 1;//0x 00 00 00 01
//低地址———------------->高地址
//01 00 00 00 小端存储(低字节在低地址处)
//00 00 00 01 大端存储(低字节在高地址处)
union U
{
char c;
int i;
}u;
u.i = 1;
if (u.c == 1)
{
printf("小端存储\n");
}
else
{
printf("大端存储\n");
}
return 0;
}