不同的字节序有什么好处?

时间:2009-05-27 07:21:21

标签: endianness

为什么某些处理器制造商决定使用

  • Little endian
  • Big endian
  • 中间人
  • 还有其他人吗?

我听说如果一个数字为负数或正数,那么使用大端可以发现更快,因为该位是第一个。 (这在现代CPU上无关紧要,因为无法再访问单个位。)

5 个答案:

答案 0 :(得分:16)

小端字节的好处是可以使用相同的地址将变量读取为任何长度。

例如,32位变量可以在不更改地址的情况下读取为8位或16位变量。现在这可能带来有限的好处,但是在汇编程序和有限内存的时代,它可能是一个显着的优势

答案 1 :(得分:3)

除了使用本机CPU字节序或处理指定的文件字节序外,大端或小端字节没有特别的好处。

大端和小端共存的原因是不同的CPU制造商使用不同的约定来表示多字节数据,当时没有出现标准。

答案 2 :(得分:1)

使用CPU的字节顺序(无论是小还是大)为您提供算术的速度优势:您可以直接在内存中添加,减去等多字节整数。

使用文件格式中预定义的,规定的字节序(无论是小还是大),无论其他系统的CPU是否有字节,都能让您在任何系统上读取文件。具有正确字节序的系统可以更快地读取文件(如果正确编写并优化了读取例程),但即使具有错误字节序的系统也可以读取它。通常,速度差是可以忽略的(除了具有大量整数的非常大的文件),因此最好首先测量优化读取程序的最大可能速度增益。

某些文件格式(例如TIFF)支持两种字节顺序。在这种情况下,最好使用CPU的字节顺序生成文件,假设文件将在同一台机器或类似的机器上进行后处理。

答案 3 :(得分:0)

在小端,你不用费心去改变地址,但在大端,你必须:http://www.noveltheory.com/techpapers/endian.asp

我实际上并不知道在现代CPU中,小端还是有优于大端的优势。我认为切换地址需要花费CPU的功率:)

答案 4 :(得分:0)

某些操作可以从另一部分之前的部分值中获益。当添加两个无符号或两个补码数时,这些数字太大而无法一次读取,结果的低位可以在高位可用之前计算,但反之则不然,这意味着小端序在那里是有利的。当访问串行闪存芯片时,行解码只能在定义行的所有位(通常是除了最不重要的8-12位,取决于芯片之外的所有位)变得可用时开始,这意味着大端顺序是有利的。那里。