如何判斷電腦CPU大小端

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

大端cpu:

所謂的大端,是指數據的高字節,保存在內存的低地址中,而數據的低字節,保存在內存的高地址中,這樣的存儲模式有點兒類似於把數據當作字符串順序處理:地址由小向大增加,而數據從高位往低位放;

小端:

所謂的小端,是指數據的高字節保存在內存的高地址中,而數據的低字節保存在內存的低地址中,這種存儲模式將地址的高低和數據位權有效地結合起來,高地址部分權值高,低地址部分權值低,和我們的邏輯方法一致。

下面是判斷的程序:

#include <stdio.h>  
  
union node  
{  
    int num;  
    char ch;  
};  
  
void big_small(union node p)  
{  
    p.num = 0x12345678;  
  
    if(p.ch == 0x78)  
    {  
        printf("It is small-endian.\n");  
    }  
    else  
    {  
        printf("It is big-endian.\n");  
    }  
}  
  
int main()  
{  
    union node p;  
      
    big_small(p);  
      
    return 0;  
  
}  

在程序中我們定義了一個結構體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。

反之就是大端。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章