"endian"一词来源于乔纳森·斯威夫特的小说格列佛游记。小说中,小人国为水煮蛋该从大的一端(Big-End)剥开还是小的一端(Little-End)剥开而争论,争论的双方分别被称为Big-endians和Little-endians。
1980年,Danny Cohen在其著名的论文"On Holy Wars and a Plea for Peace"中为平息一场关于字节该以什么样的顺序传送的争论而引用了该词。
所谓MSB (Most Significant Byte),名字很复杂,不知是否有人没搞懂,反正我开始看到这个词时候,就很糊涂,有点不完全理解。其实简单说MSB就是,一个数字中,最重要的那位。
举例来说,12004,中文读作,一万两千零四,那最高位的1,就表示了一万,此处就称作MSB,最有意义的位。
把MSB想象成鸡蛋的大头,LSB想象成鸡蛋的小头。
对于跨越多个字节的对象,一般它所占的字节都是连续的,它的地址等于它所占字节最低地址。那么,LSB和MSB谁位于内存的最低地址, 即谁代表该对象的地址?
其核心问题在于谁(LSB or MSB)代表该对象的地址,即谁占据最低地址字节?
如果LSB(鸡蛋的小头)代表该对象的地址,则机器为小头模式Little Endian.
如果MSB(鸡蛋的大头)代表该对象的地址,则机器为大头模式Big Endian.
比如整数(32位机中一般占4字节),在不同的处理器的存放方式主要有两种,以内存中0x0A0B0C0D的存放方式为例,分别有以下几种方式: