在说明大端和小端字节序之前,我们需要记住的几点:
① 在描述大小端字节序的时候,我们统一是从左向右表示计算机地址递增,如下是表示连续的四字节地址空间:
② 大端表示人类思维模式,小端表示计算机思维模式,“人大于计算机,所以人是大端”(这样会不会好记一些),大端和小端存在必要就是为了方便人和计算机之间的数据表示,就好像高级语言和机器语言一样,人可以轻易读懂高级语言,但计算机要读懂它,需要先将其转换为机器语言。
③ 地址空间是以一个字节为单位组织的,所以在存储字节的时候也是根据1字节为单位。
现在来看一个实例,一个十六进制数01 23 45 67H,占4字节(十六进制数每一个数字用4位二进制表示,所以两位十六进制数表示1字节),此时我们将其对应到大小端字节序的表示方式上,首先看
大端:
前面说了,大端字节序是按照人类思维模式来组织的,当我们看到01 23 45 67H这个数,下意识都会认为01是高位,67是低位,因为我们平时书写数的时候就是这样,高位在左,低位在右,所以大端字节序就是这样组织的如下,
较正式一点的说法是:数据的高位存储在地址空间的低位,数据的低位存储在地址空间的高位
然后是
小端:
那么计算机思维是怎么组织的,这就是小端字节序模式,与人类思维相反,计算机四个字节顺序倒过来,然后按照从左到右存放在地址空间中,这里需要注意的是:颠倒顺序是以字节为单位,字节内部是不需要进行颠倒的,所以如果写成76543210H是错的,
正式说法:数据的高位存放在地址空间的高位,数据的低位存放在地址空间的低位。
我们说小端字节序是按照计算机的思维来组织的,所以大多数计算机内部的字节序是按照小端来存储的。