大端(存储)模式:是指数据的低位保存在内存的高地址中,而数据的高位保存在低地址中;
小端(存储)模式:是指数据的低位保存在内存的低地址中,而数据的高位保存在高地址中。
为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元
都对应着一个字节,一个字节为8 bit。但是在C语言中除了8 bit的char之外,还有16 bit的short
型,32 bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32
位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因
此就导致了大端存储模式和小端存储模式。
例如:一个 16bit 的 short 型 x ,在内存中的地址为 0x0010 , x 的值为 0x1122 ,那么 0x11 为
高字节, 0x22 为低字节。对于大端模式,就将 0x11 放在低地址中,即 0x0010 中, 0x22 放在高
地址中,即 0x0011 中。小端模式,刚好相反。我们常用的 X86 结构是小端模式,而 KEIL C51 则
为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式
还是小端模式。
我们来看看数据在内存中的存储

可以发现数据是以16进制存储在内存中,所以我们可以通过指针访问空间的大小来判断系统到底是以大端的方式存储还是以小端的方式存储。


了解了大小端可以让我们对内存由更深的了解,并且也可以解释一些现象