程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 判斷大小端序的C程序

判斷大小端序的C程序

編輯:C#入門知識

判斷大小端序的C程序


概念

大端格式:字數據的高字節存儲在低地址中,而字數據的低字節則存放在高地址中。
小端格式:與大端存儲格式相反,在小端存儲格式中,低地址中存放的是字數據的低字節,高地址存放的是字數據的高字節。

5A6C5A是高字節、6C是低字節,在大端序機器中,高字節位於低地址中,即在大端序中按照5A6C存儲,在小端序中按照6C5A存儲。

為什麼存在這種模式

因為在計算機系統中,我們是以字節為單位的,每個地址單元都對應著一個字節,一個字節為8bit。但是在C語言中除了8bitchar之外,還有16bitshort型,32bitlong型(要看具體的編譯器),另外,對於位數大於8位的處理器,例如16位或者32位的處理器,由於寄存器寬度大於一個字節,那麼必然存在著一個如果將多個字節安排的問題。因此就導致了大端存儲模式和小端存儲模式。

代碼實現

請寫一個C函數,若處理器是Big_endian的,則返回0;若是Little_endian的,則返回1

int checkCPU()
{
        union w
        {
            int  a;
            char b;
        } c;
        c.a = 1;
        return(c.b == 1);
}

分析:

聯合體union的存放順序是所有成員都從低地址開始存放

short int x;

char x0,x1;

x=0x1122;

x0=((char*)&x)[0];  //低地址單元
x1=((char*)&x)[1];  //高地址單元

若x0=0x11,則是大端; 若x0=0x22,則是小端......

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved