Help and Support

文章編號: 102025 - 上次校閱: 2006年11月1日 - 版次: 2.1

Big Endian 和 Little Endian 架構的說明

在此頁中

全部展開 | 全部摺疊

結論

設計電腦時,有兩個不同的架構來處理記憶體儲存區。 稱為 Big Endian 和 Little Endian,並在記憶體中儲存位元組順序的參考。 Windows NT Little Endian 架構的設計,且不是設計因為大部分的程式 Little Endian 上撰寫與某些相依性,則會為 Big Endian 和相容。

其他相關資訊

這些兩個句子被衍生自 「 大結束在 」] 和 [「 小結束在 」。 它們參考記憶體在其中儲存的方式。 在 Intel 的電腦上, 小尾端會先儲存。 這表示類似 0x1234 十六進位文字會儲存為 (0x34 0x12) 記憶體中。 小的結束,或較低的結束,會先儲存。 相同四個位元組值為 true ; 例如,0x12345678 會儲存為 (0x78 0x56 0x34 0x12)。 「 在大端 」 會反向方式讓 0x1234 會儲存為 (0x12 0x34) 在記憶體中。 這是 Motorola 電腦使用的方法,以及可以也用於在 RISC 電腦上。 在 RISC MIPS 電腦] 和 [DEC Alpha 電腦則是設定為 Big Endian 或 Little Endian。 Windows NT 只能在兩部電腦上一點 Endian 模式。

Windows NT 是 Little Endian 架構設計的。 這樣會自動處理所有的作業系統相關問題,會寫入 「 硬體抽象層 (HAL)。 因此,是有可能建立 Big Endian 架構上無法使用的 HAL。 移植程式碼的基本問題的方式,為所有的程式撰寫的程式碼。 假設的 Big Endian 或 Little Endian 正在使用通常是撰寫程式碼。 這可能不會是特定的 HAL,可能是資訊和圖形的位元遮罩一樣簡單。 如果要釐清這個概念的多個,請依照下列兩個程式設計範例。

範例 1

   struct
   {
      WORD y;
      WORD x;
   } POS;

   lparam = (DWORD) POS;
				
基本上,沒有假設正在使用該 Little Endian,程式碼中。 切換的位元組會被假設 'C' 結構中。 這是更快,在 Intel 的架構,但以 Big Endian,將會無法運作。

範例 2

另一個範例會將使用位元遮罩的常見作法是。 下列是範例定義一個位元遮罩:
   #define BITMASK    0x0008
				
這可讓您檢查第位元是 1 的如果您 AND 與另一個數字。 也可讓您設定在第位元的 OR-ing 它與另一個值。 問題是當您 OR 或 AND 這的 DWORD (雙精度浮點數的文字),或為 WORD 以外的大小值。 這會導致奇怪的事情發生及發生未預期的結果。 您可能會做有關如何以 Little Endian 的假設,但它不會運作以 Big Endian 方式相同。 在中建置這些假設已經建立大量的程式碼。

請注意 PowerPC 和 Sparc 晶片是也有點 Endian 和大之間 switchable Endian。 不過,Apple PowerMac PowerPC) 晶片的實作會停留在 Big Endian 模式中。 因此,Windows NT 可能連接埠的 PowerPC 但是可能無法在 PowerPC PowerMac 實作。

這篇文章中的資訊適用於:
  • Microsoft Windows NT Advanced Server 3.1
  • Microsoft Windows NT Workstation 3.1
關鍵字:?
kbmt kbhardware KB102025 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。如果您發現錯誤,並想要協助我們進行改善,請填寫本篇文章下方的問卷。
按一下這裡查看此文章的英文版本:102025? (http://support.microsoft.com/kb/102025/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

文章翻譯