大端法還是小端法區別

2021-07-11 13:53:46 字數 1132 閱讀 4697

第一部分 基本概念

首先不管是大端法還是小端法儲存,計算機在記憶體中存放資料的順序都是從低位址到高位址,所不同的是首先取低位元組的資料存放在低位址還是取高位元組資料存放在低位址。

若首先取高位元組的資料存放在低位址,則是大端法;

若首先取低位元組的資料存放在低位址,則是小端法;

例如有資料0x01234567 (注意:左邊是高位元組,右邊是低位元組)

大端法存放:

對應的資料依次為:0x01 

0x23 

0x45 

0x67

小端法存放:

對應的資料依次為:0x67 

0x45 

0x23 

0x01

第二部分 判斷乙個機器是大端存放還是小端法存放

知道了大端和小端的定義,我們很容易寫**判斷乙個機器是大端還是小端:

int main(int argc, char* argv) c;

c.a = 0x0001;

if(c.b==1)

printf("small endian\n");

else if(c.b==0)

printf("big endian\n");

else

printf("error\n");

return 0; }

用這個程式可以判斷intel pc機用的是小端法。

第三部分 總結

因為我們的思維習慣是從左到右的順序,所以大端法的儲存方式符號我們思維習慣,這因為這個原因,大端法也稱為網路編碼。ibm的370主機,多數基於risc計算機,和motorola的微處理器使用big endian方法。tcp/ip也使用big endian方法(big endian方法也叫做網路編碼)。因為我們的語言都是從左到右的習慣方式,所以我們希望儲存字元和數字也以同樣的方式出現。因此,我們許多人會想當然的認為big endian是流行的儲存方式,正如我們平時所讀到的,包括我自己在內,呵呵。但是正如上面測試的那樣,intel處理器(cpus)至少一些在他們的平台的其他程式都是little-endian的,所以實踐是檢驗真理的唯一標準,o(∩_∩)o~

**:

小端法 大端法

小端法little endian 諸如intel的機器就是採用這種規則 高位址存高位資料 大端法big endian 諸如ibm,motoral,sun採用此規則 低位址存高位資料 如需儲存oxeeaabbcc此數 如採用大端法儲存如下 address low high ee aa bb cc 如採...

小端法與大端法及驗證機器小端還是大端的驗證程式

首先請看定義 a little endian就是低位位元組排放在記憶體的低位址端,高位位元組排放在記憶體的高位址端。b big endian就是高位位元組排放在記憶體的低位址端,低位位元組排放在記憶體的高位址端。舉例說明 假設變數x型別為int,位於位址0x100處,x的十六進製制表示形式為0x01...

大端法與小端法

一 什麼是位元組序 位元組序,顧名思義位元組的順序,再多說兩句就是大於乙個位元組型別的資料在記憶體中的存放順序 乙個位元組的資料當然就無需談順序的問題了 指的是記憶體的高 低位址,計算機在記憶體中存放資料的順序都是從低位址到高位址 高 低位元組 有些文章中稱低位位元組為最低有效位,高位位元組為最高有...