我们看书的时候会遇见两个名词,大端模式和小端模式,那它们有什么区别呢?让我们以一个32位的数字在内存中的存放方式来解析大端与小端。
在内存中每个地址对应一个字节,每个字节又是由8位二进制组成,所以可以用两个十六进制数字来表示一个字节。但是对于位数大于8的处理器,由于寄存器的宽度大于一个字节,就会存在如何存储的问题,就引入了大端模式和小端模式。对于一个32位的数字,例如 0X12345678;是以0X12,0X34,0X56,0X78分开存放的。 假设它们在内存中的地址为100,101,102,103;如果按照0X12,0X34,0X56,0X78依次存放进去,可以看出在低地址里面存放了权重较大的数据,即低地址存放高字节,高地址存放低字节,这就是大端模式。如果按照0X78,0X56,0X34,0X12存放的话,就是在低地址位存放低字节,高地址存放高字节,即为小端模式。这样举例方便理解,实际寄存器中可能如果是四个字节,就只会分配一个内存地址,但是大端和小端的存储方式不会改变。
如图所示,为小端模式。低地址存放低字节,高地址存放高字节
100 101 102 103
如图所示,为大端模式。低地址存放高字节,高地址存放低字节
100 101 102 103