測試自己的系統是大端還是小端

2021-06-18 18:11:38 字數 1132 閱讀 7681

big endian:最低位位址存放高位位元組,可稱高位優先,記憶體從最低位址開始按順序存放(高數字數字先寫)。最高位位元組放最前面。

little endian:最低位位址存放低位位元組,可稱低位優先,記憶體從最低位址開始按順序存放(低數字數字先寫)。最低位位元組放最前面。

對於單一的位元組(a byte),大部分處理器以相同的順序處理位元(bit),因此單位元組的存放方法和傳輸方式一般相同。

對於多位元組資料,如整數(32位機中一般佔4位元組),在不同的處理器的存放方式主要有兩種,以記憶體中0x0a0b0c0d的存放方式為例,分別有以下幾種方式:

注: 0x字首代表十六進製制。

資料以8bit為單位:

位址增長方向 →

...0x0a

0x0b

0x0c

0x0d

...

示例中,最高有效位(msb, most significant byte)是0x0a 儲存在最低的記憶體位址處。下乙個位元組0x0b存在後面的位址處。正類似於十六進製制位元組從左到右的閱讀順序。

資料以16bit為單位:

位址增長方向 →

...0x0a0b

0x0c0d

...

測試大端小端的c**:

#include int main()

printf("p=%x\n",p);//當前指標變數的值(指向的位址)

p++;//指標自增

printf("p++之後,p=%x\n",p);//驗證指標自增以後的值(重新指向的位址)

if(*p == 0x56)

printf("litle endian\n");

printf("sizeof(p)=%d \n",sizeof(p));

//測試指標變數所佔的位元組數,in fact,在win32平台上,任何型別的指標變數所佔的位元組數均為4.

p =null;

return 0;

}

**執行結果:

由上面的輸出結果可以判斷出當前的系統是小端法。

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

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

golang判斷系統是大端還是小端儲存

在看goim源 時看到這樣一段 func islittleendian bool 這段 是為了判斷系統是大端儲存還是小端儲存。如何區分大端儲存還是小端儲存?以0x01020304為例子 大端 16進製制 01 02 03 04 小端 16進製制 04 03 02 01 那麼來分析一下上面的 func...

如何使用程式判斷系統是大端還是小端?

1 第一點,先要明白乙個,就是系統在申請記憶體的時候,是從高位址到低位址還是從低位址到高位址。先用下面乙個簡單的程式來判斷申請的記憶體位址順序問題。下面是乙個典型的記憶體結構圖。我們用下面這個程式來檢驗 include intmain 輸出結果是 可以看出,棧空間的申請是從高到低的。2 有了上面的概...