在设计计算机系统的时候,有两种处理内存中数据的方法。一种称之为小端模式,即Intel 模式,另一种称之为大端模式,即Motorola模式。

为什么会有大小端之分呢?

在计算机系统中,是以字节为单位的,每一个地址单元对应一个字节。但是,我们知道还有16bit的shot型、32bit的long型等数据类型,此外对于大于8位的处理器,诸如16位、32位、64位的,由于寄存器的宽度是大于一个字节的,那么就必然存在一个如何将多字节排序的存藏的问题,这就导致了所谓的大端模式和小端模式。

假如有一个32bit的数据a,a在内存中的地址为:0x00000000,a的值为0x12345678,

其中0x12为高字节,0x78为低字节。

对于大端模式:在大端模式中,低位字节放在高地址,高位字节放在低地址。

高地址0x12应该存放在低地址中,存放在0x00000000中

0x34存放在0x00000001中

0x56存放在0x00000002中

0x79存放在0x00000003中

对于小端模式:在小端模式中,低位字节放在低地址,高位字节放在高地址;

高字节0x12应该存放在高地址中,存放在0x00000003中

编译器测试:

大端对齐和小端对齐(大端模式和小端模式)(1)

大端对齐和小端对齐(大端模式和小端模式)(2)

我的编译器是小端模式。

,