大小端
对于整型来说,内存中存放的是补码,补码是按大小端模式进行存储:
大端存储 | 数据低位存在内存高地址,高位存在内存低地址 |
---|---|
小端存储 | 数据低位存在内存低地址,高位存在内存高地址 |
记忆方法 小小小:数据 小 权值位放在 小 地址处,叫 小 端 ,
其余情况就是大端
这个规律是将数据按字节(00,FF每两个数是一个字节)的顺序进行存储,而不是按二进制位的顺序
计算机只从低地址处开始访问
为何会有大小端存储方式
- 因为计算机系统以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit;
- 除了8bit的char之外,还有16bit的short型,32bit的long型(看具体的编译器);
- 对于位数大于8位的处理器,如16位或者32位;
- 由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题;
- 因此就导致了大端存储模式和小端存储模式。
如何用代码判断计算机的大小端
实现:
1的十六进制为0x00000001,若是小端存储,则第一个字节值为1,若是大端存储,第一个字节的值为0;
指针的类型决定其解引用操作可访问几个字节,char指针解引用只能访问或操作一个字节的内容,将a的地址强制转化成char*类型,再用char指针访问首字节。