大小端:
大端存储模式:就是内存的低地址上存着数据的高位,高地址上存着数据的低位。
小端存储模式:就是内存的低地址上存数据的低位,而高地址上存数据的高位。
为什么要有大小端?
这是因为在计算机系统中,以字节作为单位,每个地址单元都对应一个字节,一个字节8位。在C语言中除了8位的char外,有16位的short,32位的long型具体要看编译器,对于位数大于8位的处理器,比如16或32位的处理器,由于寄存器宽度大于一个字节,就会存在一个将多个字节安排的问题。大小端由此而产生。
干货:如何测当前机器是大端还是小端?(两种方法)
第一种:利用当前一个高类型的变量给其赋值,然后取到其低地址,查看其存储的数据。
void CheckSystem1()
{
int num = 1;
int _num = (*(char*)&num);
printf("%d\n", _num);
if (_num == 1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
}
第二种利用联合体特性
void CheckSystem2()
{
union
{
int num;
char a;
}Sunion;
Sunion.num = 0x12345678;
printf("%x\n", Sunion.a);
printf("%d\n", Sunion.a);//十进制120
if (Sunion.a == 0x78)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
}
珍&源码