寫一個函數判斷系統是大端還是小端

#include union node { int a; char b[4]; }; int main() { union node t; t.a=1; printf("%d\n",t.b[0]); printf("%d\n",t.b[1]); printf("%d\n",t.b[2]); printf("%d\n",t.b[3]); } 把int的每個字節讀出來。要是第一個字節爲0證明是大端模式 ...

寫一個函數判斷系統是大端還是小端。若處理器是Big_endian的,則返回0;若是Little_endian的,則返回1.
大端格式:在這種格式中,字數據的高字節存儲在低地址中,而字數據的低字節則存放在高地址中
小端格式:與大端存儲格式相反,在小端存儲格式中,低地址中存放的是字數據的低字節,高地址存放的是字數據的高字節
聯合體union的存放順序是所有成員都從低地址開始存放。
Int checkCPU ()
{
  Union w
  {
    Int a;
    Char b;
  }c;
  c.a=1;
  return (c.b==1);
}


計算機的一個int型數據是用多個字節表示的,如果在內存中存放時標稱該數據的地址中存放的是數據的最低字節,就叫小端機,反之把高字節存放在標稱地址中的則稱爲大端機。所以可以定義一個int變量,將其地址強制爲char *型地址,檢測該地址中的數據若是int變量的最低字節,則是小端機,反之則爲大端機。代碼如下:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
    int n=1;
    printf(*(char *)&n ? "小端\n" : "大端\n");
    return 0;
}

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