现在,大多数的计算机都是按字节编址的(除了按字节编址还有按字编址和按位编址)。所以这里只讨论按字节编址的计算机。
大端字节序:数据的高字节保存在低地址。
小端字节序:数据的高字节保存在高地址。
计算机中的内存可以看成是线性的(这里只讨论按字节编址), 如下图:
从上图可以看出,一个int型是16位也就是两个字节的长度,一共可以表示2^16byte(也就是64KB)的内存。
现在我们来看看一个int型分别在大端和小端是怎么存储的。
举个例子:
我们现在有一个整数是258。用16进制表示是0x0102, 然后我们把这个整数拆分成两个字节,第一个字节为0x01, 第二个字节为0x02.
对应的二进制分别是:0000 0001 和 0000 0010。
如果在一个使用大端字节序的电脑上,这个整数会被这样存放:
这跟我们平时上课教的使用的字节序是一样的。都是高位在低地址。
如果一个使用小端字节序的电脑上,这个整数的高字节就会存放在高地址上:
仔细看低地址的内容编程了int型的低字节部分,也就是0000 0010。
以上就是大端和小端计算机在存储数据方面的区别。