2009-05-27 116 views
11

为什么有些处理器manifacturers决定使用不同字节的优点是什么?

  • 小尾数
  • 大端
  • 中端
  • 任何其他方面?

我听说用big endian可以更快地发现,如果一个数字是负数或正数,因为该位是第一位。 (这在现代CPU上并不重要,因为个别位不能再被访问。)

+5

是中段蛋白质,你把鸡蛋放在一边,把它分解在中间? – workmad3 2009-05-27 07:28:31

+0

中端是PDP-11使用的方案:位15..8,然后是7..0,31..24,23..16。 – finnw 2009-05-27 08:16:10

+0

所以中端仅仅是16位小端 – 2009-06-02 13:30:49

回答

15

Little Endianness的好处是可以使用相同的地址将变量读取为任意长度。

例如,一个32位变量可以读取为8位或16位变量而不更改地址。这些日子可能受益有限,但在汇编程序和有限内存的日子里,它可能是一个显着的优势

1

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

在文件格式中使用预定义的规定的字节顺序(无论大小或大小),无论其他系统的CPU的字节顺序如何,都可以读取任何系统上的文件。具有正确字节顺序的系统可以更快地读取文件(如果读取例程被正确写入和优化),但即使是具有错误字节顺序的系统也可以读取它。通常情况下,速度差异是可以忽略的(除了非常大的文件有很多整数),所以最好先测量优化读取程序的最大可能的速度增益。

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

+2

实际上,对于一个大文件,即使只有整数,如果仅仅需要进行处理,您将受到磁盘或网络中读取速度的限制do是交换结束。实际上,在现代CPU上,比起I/O之前,你可以做更多的工作,这就是为什么经常将文件压缩存储在磁盘上,并且在处理它们时快速解压缩它们的速度比仅仅处理一个未压缩的文件。 – 2009-05-27 07:40:11

+0

你能解释一下阅读文件时Endianness是如何重要的吗?如果我阅读文本文件,这有什么关系? – Geek 2009-05-27 07:43:30

3

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

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

0

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