2009-05-27 115 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位以外的最低有效位都取決於芯片)變得可用時開始,這意味着大端順序是有利的那裏。