12

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

  • 小端
  • 大端
  • 中端
  • 还有其他人吗?

?

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

4

5 回答 5

18

小端序的好处是可以使用相同的地址以任意长度读取变量。

例如,可以将 32 位变量读取为 8 位或 16 位变量,而无需更改地址。如今,这可能带来的好处有限,但在汇编器和内存有限的时代,它可能是一个显着的优势

于 2009-05-27T07:38:56.053 回答
4

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

big endian 和 little endian 并存的原因是不同的 CPU 制造商使用不同的约定来表示多字节数据,并且当时没有标准出现。

于 2009-05-27T07:34:10.057 回答
1

使用 CPU 的字节顺序(无论大小)可以让您在算术上获得速度优势:您可以直接在内存中添加、减去等多字节整数。

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

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

于 2009-05-27T07:26:48.307 回答
0

在 little endian 中,您不必费心更改地址,但在 big endian 中,您必须:http://www.noveltheory.com/techpapers/endian.asp

我实际上不知道在现代 CPU 中,小端序是否比大端序有优势。我天真地认为切换地址会消耗 CPU 皮瓦的功率 :)

于 2011-05-27T01:12:49.540 回答
0

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

于 2016-06-16T19:56:08.463 回答