2012-03-08 48 views
1

有沒有很多電腦使用Big Endian?我剛剛在5臺不同的電腦上測試過,每臺電腦分別購買不同年份和不同型號。每個使用Little Endian。 Big Endian現在還在使用,還是用於摩托羅拉6800等較老的處理器?我應該擔心Big Endianness還是隻是一個微不足道的方面?

編輯:

謝謝TreyA,intel.com/design/intarch/papers/endian.pdf是一個很不錯的,方便的文章。它涵蓋了每一個答案,並擴展了它們。

+1

如果你做任何形式的網絡編程的你絕對* *需要擔心,因爲網絡字節順序是BE。假設整個世界就像你總是在尋求麻煩一般。 – Flexo 2012-03-08 15:23:09

+1

這是有點過時了(2004年成爲舊時代?),但有一些很好的信息:http://www.intel.com/design/intarch/papers/endian.pdf – TreyA 2012-03-08 15:23:54

+2

ARM,PowerPC,Alpha,SPARC V9,MIPS ,PA-RISC和IA-64是維基百科文章列舉的例子。在我的工作中,我必須處理所有這些問題,其中一些更少一些。 – PlasmaHH 2012-03-08 15:23:56

回答

5

當前有許多處理器是大端編碼,或者允許在大端和小端之間切換端模(如SPARC,PowerPC,ARM,Itanium ..)。

這取決於你的意思是「關心endian」。如果你只是編程你所需要的數據,你通常不需要特別關心Endianess。當您需要與外部世界進行通信時,Endian很重要,例如讀取/寫入文件或通過網絡發送數據,並且您可以通過直接向/從內存讀取/寫入大於1個字節的整數來完成此操作。

當你需要處理外部數據時,你需要知道它的格式。其部分格式是例如知道如何在該數據中編碼整數。如果格式指定4字節整數的第一個字節是所述整數的最高有效字節,則讀取該字節並將其置於程序中整數的最高有效字節上,並且您將能夠完成該罰款 帶有在小型和大型機器上運行的代碼。

所以它並不是關於處理器endianess,而是你需要處理的數據。這些數據可能有以「endian」存儲的整數,你需要知道哪些數據格式會根據某種規範使用各種endianess,或者取決於與格式相關的人的興趣。

3

根據不同的體系結構,Big endian仍然是最常用的。事實上,在英特爾和舊DEC電腦之外,我不知道是一個小端:Sparc,Power PC(IBM Unix機器),HP的Unix平臺,IBM大型機等都是大端。但它有關係嗎?關於我唯一不得不考慮排序的時候是在實施一些低級系統例程時,比如modf。否則,int是一定範圍內的整數值,就是這樣。

0

問題沒有足夠的上下文。一般來說,您應該隨時瞭解它,但在日常編碼中不需要強調它。如果你計劃搞亂你的整數的內部字節,開始擔心endianness。如果您打算對整數進行標準數學計算,請不要擔心。

網絡連接(大端標準)和二進制記錄(必須研究整數是存儲大端還是小端)的兩個大端位置彈出。

1

下面的通用平臺使用大端編碼:

  • java中的TCP/UDP數據包
  • 網絡數據(甚至在IP層面,但我不知道這一點)

x86/x64 CPU是little-endian。如果你打算在二者之間使用二進制數據進行交互,你應該明白這一點。

相關問題