Endian的快速记忆法

169 阅读2分钟

Endian是底层编程的重要概念之一,但是在实践中经常搞混,比如endian到底是什么?大头和小头到底是地址的头还是数位的头。 下面就是一个快速记忆法:

想要快速搞懂大小端?其实很简单,先来认识一下这俩家伙。

大端(Big-Endian):高贵的正经派 想象一下,大端存储就像你去写地址——省份、城市、街道、门牌号,从大到小,一步步清晰明了。大端就是这个意思:高位字节先存,低位字节后存。 比如,你有个16进制数 0x12345678,大端就把 12(最高位)摆在最前面,存储顺序是:12 34 56 78,一切都井然有序。 说白了,大端就是“正序控”,从不搞什么小动作,最重要的东西必须摆在最显眼的地方!

小端(Little-Endian):反转派的快乐 小端存储完全不按常理出牌,属于倒着来。你想啊,写字顺序是 1234,小端就非得来个 4321。 我们的小端派呢,最不重要的低位字节(比如 78),要放在最前面!最终的存储顺序是:78 56 34 12,搞得人有点懵,但确实也有自己的逻辑在。 你可以把它想象成一个小孩穿衣服,袜子、鞋子先上,帽子最后戴,从“脚”开始倒着来,这就是小端。

假设有一个 4 字节的整数 0x12345678(16 进制表示),如何在大端和小端系统中存储?

大端存储: 按照从高到低的顺序:12 34 56 78 在内存中的样子(地址从左到右增加):0x12 0x34 0x56 0x78 小端存储: 按照从低到高的顺序:78 56 34 12 在内存中的样子(地址从左到右增加):0x78 0x56 0x34 0x12