无意间看到关于字节序类型的知识。看了几遍没看懂,仔细查阅才理解,现写下让自己最能理解的通俗解释。
对于某个拥有多个字节的数据,数据中的这些字节在内存中排列顺序有两个规则:即littleendian(小端法)和bigendian(大端法)。这也就是字节序的两个类型。
字节序:(多字节类型数据的)多个字节在内存中的存储顺序
两个让我最开始很迷糊的概念开始了。
1.小端法:低位字节排放在内存的低地址端,高位字节排放在内存的高地址端
2.大端法:高位字节排放在内存的低地址端,低位字节排放在内存的高地址端
其实之所以迷糊是因为我没有理解低/高位字节和内存的低/高地址端的概念。
这两个概念中的高低顺序在任何时候都是固定的(即左高右低,来源于2的低次幂和高次幂)
如int类型的长度为4个字节:
关于内存地址:
此时再来理解这两个概念:
小端法:即从最低有效字节到最高有效字节逐字节开始在内存低端地址向内存高端地址方向开始存储。
大端法:即从最高有效字节到最低有效字节逐字节开始在内存低端地址向内存高端地址方向开始存储。
如:一个类型为int的16进制变量x=0x01234567
(其二进制表示为0000 0001 0010 0011 0100 0101 0110 0110)
其在内存中的存储方式依照以上两种字节序类型即为(假设在内存中存储起始地址为0x100,每个地址增量为1):
大端法:
小端法:
上图效果同下图:
大端法:
)