初夏小谈:大小端(测试当前机器是大端/小端)

大小端:

               大端存储模式:就是内存的低地址上存着数据的高位,高地址上存着数据的低位。

               小端存储模式:就是内存的低地址上存数据的低位,而高地址上存数据的高位。

为什么要有大小端?

        这是因为在计算机系统中,以字节作为单位,每个地址单元都对应一个字节,一个字节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");
	}
}

                                                                                                                                                                    珍&源码

猜你喜欢

转载自blog.csdn.net/IT_xiaoQ/article/details/84324845