1. 程式人生 > >檢查系統是大端還是小端模式

檢查系統是大端還是小端模式

在計算機系統中,規定:每個地址單元都會對應一個位元組(8個bit),但是,在c語言中,除了有一個位元組(8個bit)的char,也有兩個位元組(16個bit)的short,也有四個位元組(32個bit)的long(在不同的編譯器下可能不同)。對於16位或者32位的處理器,即就是大於8位的處理器,由於暫存器的寬度大於一個位元組,那麼就存在如何將一個多位元組的變數的資料如何存放的問題——所以,就有了大小端之分。

首先,應該明確的是:

資料有高位和低位之分  地址有低地址和高地址之分

大小端的理解:

小端:將資料的低位存放在低地址處,將資料的高位存放在高地址處。  大端:將資料的低位存放在高地址處,將資料的高位存放在低地址處。

所以可以定義一個int變數,將其地址強制為char *型地址,檢測該地址中的資料若是int變數的最低位元組,則是小端機,反之則為大端機。程式碼如下:

1

2

3

4

5

6

7

//#include "stdafx.h"//If the vc++6.0, with this line.

int main(void){

int n=1;

printf(*(char *)&n ? "小端\n" "大端\n");

return 0;

}