小端格式和大端格式


本文轉載自 清風行雲:小端格式和大端格式(Little-Endian&Big-Endian)

 
 
大端機和小端機
   不同的CPU有不同的字節序類型,這些字節序是指整數在內存中保存的順序。
  最常見的有兩種:
    1. Little-endian:將低序字節存儲在起始地址(低位編址)
    2. Big-endian:將高序字節存儲在起始地址(高位編址)
 

  小端機 LE(little-endian):
    最符合人的思維的字節序 
    地址低位存儲值的低位,地址高位存儲值的高位 
    怎么講是最符合人的思維的字節序,是因為從人的第一觀感來說,低位值小,就應該放在內存地址小的地方,也即內存地址低位;反之,高位值就應該放在內存地址大的地方,也即內存地址高位 
 
 
  大端機 BE(big-endian): 
    最直觀的字節序 
    地址低位存儲值的高位,地址高位存儲值的低位 
    為什么說直觀,不要考慮對應關系,只需要把內存地址從左到右按照由低到高的順序寫出,把值按照通常的高位到低位的順序寫出,兩者對照,一個字節一個字節的填充進去 

 
 
  實例
 
  例子1:在內存中雙字0x01020304(DWORD)的存儲方式。 
    內存地址 4000 4001 4002 4003
    LE      04   03   02   01 
    BE      01   02   03   04 
  注:每個地址存1個字節,每個字有4個字節。2位16進制數是1個字節(0xFF=11111111)。

 
  例子2:如果我們將0x1234abcd寫入到以0x0000開始的內存中,則結果為
        big-endian   little-endian
    0x0000    0x12         0xcd
    0x0001    0x23         0xab
    0x0002    0xab         0x34
    0x0003    0xcd         0x12

  x86系列的CPU都是little-endian的字節序。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM