大小端存储

大端存储和小端存储

数据存放到内存中有两种存储方式:
大端存储:数据高字节序的字节位存放到低地址处,低字节序的字节位存放到高地址处
小端存储:数据高字节序的字节位存放到高地址处,低字节序的字节位存放到低地址处

小端存储

数据存储在内中都会转化成二进制,一个int类型的数据是4个字节,一个字节是8个比特位,所以一个int类型数据存放到内存中是32个比特位。
例如整型数字1:
在这里插入图片描述
在vs中,内存数据以16进制表示,即每8个比特位表示一个字节:
在这里插入图片描述

大小端存储_第1张图片
从这里能看出来,01在二进制中是低字节序,而它的内存空间也是相对低地址。
像这样,二进制位中低字节位的数据存放到低地址处,高字节位的数据存放到高地址处,我们把它称为小端存储。

大端存储

与小端存储相反的就是大端存储
大小端存储_第2张图片

相应的低字节序的数据存放到高地址,高字节序的数据存放到低地址。

代码验证:

编写一个程序来检查下我们所在的机器的存储方式:

int main()
{
	unsigned int a = 1;
	char* p =(char*) & a;
	if (*p == 1)
	{
		printf("小端\n");

	}
	else


	{
		printf("大端\n");
	}
	return 0;
}

将数据a的指针强制类型转换成char类型指针,p所指向的空间保存的数据是a的低字节序内的数据,而p中的地址,则是低地址。
如果是大端存储,该地址处保存的数据:
大小端存储_第3张图片

小端存储保存的数据就是:
大小端存储_第4张图片

运行结果:
大小端存储_第5张图片

就像第一张图的内存看到的。

你可能感兴趣的:(c语言,开发语言)