有很多计算机使用 Big Endian 吗?我刚刚在 5 台不同的计算机上进行了测试,每台计算机都是在不同年份和不同型号中购买的。每次使用Little Endian。Big Endian 现在是否仍在使用,还是用于摩托罗拉 6800 等较旧的处理器?
编辑:
谢谢 TreyA,intel.com /design/intarch/papers/endian.pdf是一篇非常好用的文章。它涵盖了下面的所有答案,并对其进行了扩展。
有很多计算机使用 Big Endian 吗?我刚刚在 5 台不同的计算机上进行了测试,每台计算机都是在不同年份和不同型号中购买的。每次使用Little Endian。Big Endian 现在是否仍在使用,还是用于摩托罗拉 6800 等较旧的处理器?
编辑:
谢谢 TreyA,intel.com /design/intarch/papers/endian.pdf是一篇非常好用的文章。它涵盖了下面的所有答案,并对其进行了扩展。
今天有许多大端处理器在使用,或者允许选择在大端和小端之间切换端模式(例如 SPARC、PowerPC、ARM、Itanium..)。
这取决于您所说的“关心字节序”是什么意思。如果您只是对所需的数据进行编程,通常不需要特别关心字节序。当您需要与外界通信时,Endian 很重要,例如读/写文件,或通过网络发送数据,您可以通过直接向/从内存读取/写入大于 1 字节的整数来做到这一点。
当你确实需要处理外部数据时,你需要知道它的格式。它的部分格式是例如知道整数是如何在该数据中编码的。如果格式指定 4 字节整数的第一个字节是所述整数的最高有效字节,则读取该字节并将其放在程序中整数的最高有效字节,您将能够完成使用在小端和大端机器上运行的代码。
所以它不是特别关于处理器字节序,而是你需要处理的数据。该数据可能具有存储在“endian”中的整数,您需要知道哪个,并且各种数据格式将使用各种字节序,具体取决于某些规范,或者取决于提出该格式的人的心血来潮。
就不同的架构而言,大端仍然是最常用的。其实在Intel和老的DEC电脑之外,我不知道小端:Sparc、Power PC(IBM Unix机器)、HP的Unix平台、IBM大型机等都是大端。但这有关系吗?唯一一次我不得不考虑字节顺序是在实现一些低级系统例程时,比如modf
. 否则,int
就是一定范围内的整数值,仅此而已。
以下常见平台使用大端编码:
x86/x64 CPU 是 little-endian。如果您要与两者之间的二进制数据进行交互,您绝对应该意识到这一点。
这更像是评论而不是答案,但我不能发表评论,我认为这是一篇很棒的文章,我认为值得阅读。
这是丹尼·科恩 (Danny Cohen) 于 1980 年撰写的关于字节顺序的经典著作: ON HOLY WARS AND A PLEA FOR Peace
这个问题没有足够的上下文。一般来说,您应该随时注意它,但您不需要在日常编码中强调它。如果您打算弄乱整数的内部字节,请开始担心字节顺序。如果您打算对整数进行标准数学运算,请不要担心。
出现字节序的两个大的地方是网络(大字节序标准)和二进制记录(必须研究整数是存储大字节序还是小字节序)。