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

位元組由大到小的小 endian 架構的說明

在此頁中

全部展開 | 全部摺疊

結論

在設計的電腦時有兩個不同的架構來處理記憶體儲存。 它們會稱為大 Endian 和小 Endian,並指向位元組儲存在記憶體中的順序。 Windows NT 的設計小 Endian 架構,以及不設計為與大 Endian 相容,因為大部分的程式在小 Endian 撰寫某些相依性。

其他相關資訊

這些兩個字詞被來自 「 大結束"和"一點結束在。" 它們參考的儲存記憶體的方式。 Intel 的電腦上較少的結束儲存第一次。 這表示像 0x1234 十六進位文字會儲存在為 (0x34 0x12) 的記憶體中。 幾乎結束或較低的結束,會儲存在第一次。 相同是四個位元組值,則為 True ; 比方就說 0x12345678 會儲存為 (0x78 0x56 0x12 0x34)。 「 大結束在 「 反向方式會讓 0x1234 會為 (0x12 0x34) 儲存在記憶體中。 這是 Motorola 電腦使用的方法,也可以用在 RISC 電腦上時。 RISC 架構 MIPS 電腦] 和 [DEC Alpha 電腦是設定 Endian 大或小 Endian。 Windows NT 適用只能在兩台電腦上的 [小 Endian 模式中。

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

範例 1

   struct
   {
      WORD y;
      WORD x;
   } POS;

   lparam = (DWORD) POS;
				
基本上,沒有程式碼小 Endian 正在使用中的假設。 在 'C' 結構時,會被假設位元組的切換。 這是 [在 Intel 的架構上的 [速度更快,但不是適用於大型 Endian。

範例 2

另一個範例是使用位元遮罩的常見的作法。 下列是範例定義一個位元遮罩:
   #define BITMASK    0x0008
				
這可讓您檢查是否 4 位元是 1 的如果您 AND 與另一個數字。 也可讓您設定位在第四元的 OR ing 它與另一個值。 問題出現時您 OR 或與這以 DWORD (雙精準數,Word) 或一個 WORD 以外的其他大小的值。 這會使奇怪的事情發生,並且未預期的結果。 您可以將假設它如何使用小 Endian,但它不會執行與大 Endian 相同的方式。 已經內建的這些假設會建立大量的程式碼。

請注意 PowerPC 和 Sparc 晶片也是 switchable 之間小位元組由大到小大 Endian。 但是,PowerPC] 晶片的蘋果 PowerMac 實作是停滯在大 Endian 模式中。 因此,PowerPC,但可能無法在 PowerPC PowerMac 實作,可能會連接埠 Windows NT。

這篇文章中的資訊適用於:
  • 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及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
 

文章翻譯