怎麼編寫簡單程式判斷電腦是大端cpu還是小端cpu

2021-07-24 19:48:15 字數 763 閱讀 3581

電腦的cpu有兩種,大端和小端cpu。

大端cpu:

所謂的大端,是指資料的高位元組,儲存在記憶體的低位址中,而資料的低位元組,儲存在記憶體的高位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理:位址由小向大增加,而資料從高位往低位放;

小端:所謂的小端,是指資料的高位元組儲存在記憶體的高位址中,而資料的低位元組儲存在記憶體的低位址中,這種儲存模式將位址的高低和資料位權有效地結合起來,高位址部分權值高,低位址部分權值低,和我們的邏輯方法一致。

下面是判斷的程式:

#include union node

;void big_small(union node p)

else

}int main()

在程式中我們定義了乙個結構體node,其中包含了兩個型別的資料,分別為int 型和char型。

程式執行時,記憶體給他們分配空間,int型分配4個位元組,char型也分配4個位元組,(原因上乙個部落格有寫),

在函式big_small中我們給結構體中的num對應空間存放資料,存放16進製制數0x12345678.(12是高位元組,78是低位元組)。

如果是小端cpu,它會把高位元組存放在高位址,低位址存放低位元組。

大端cpu則相反。

所以存放完畢時我們執行語句if(p.ch == 0x78),因為所有cpu都會從低位址讀取資料,

所以如果讀取的資料為78,即說明該16進製制數把78這個低位元組資料存放在低位址中。所以可以判斷這是個小端cpu。

反之就是大端。

判斷系統CPU是大端還是小端

所謂的大端小端就是cpu在儲存資料的時候是從高位址開始儲存還是低位址開始儲存。例如在sizeof int 2的系統中,1 2 8 1 512 513,我們把這個值賦值給int ntemp 1 2 8 我們假定系統分配給變數ntemp的位址空間為 0x0000ff08到0x0000ff09,那麼0x0...

如何判斷CPU是大端還是小端模式

如何判斷cpu是大端還是小端模式 2010 12 03 23 35 25 分類 c c 在arm體系中,每個字單元包含4個位元組單元或者兩個半字單元。在字單元中,4個位元組哪乙個是高位位元組,哪乙個是低位位元組則有兩種不同的格式 big endian和little endian格式。在小端模式中,低...

如何判斷CPU是大端還是小端模式

在arm體系中,每個字單元包含4個位元組單元或者兩個半字單元。在字單元中,4個位元組哪乙個是高位位元組,哪乙個是低位位元組則有兩種不同的格式 big endian和little endian格式。在小端模式中,低位位元組放在低位址,高位位元組放在高位址 在大端模式中,低位位元組放在高位址,高位位元組...