C語言大小端問題剖析

2021-07-25 13:59:41 字數 1237 閱讀 2541

在c語言中,常常會遇到判斷cpu大小端的問題,在很多的筆試面試中經常會出現類似的題目,網路程式設計中也會程序遇到類似的問題,此文做以總結。

1、那麼何為cpu的大端和小端呢?

大端: 指的是資料的高位元組存放在記憶體的低位址中,資料的低位元組存放在記憶體的高位址中;

小端: 指的是資料的高位元組存放在記憶體的高位址中,資料的低位元組存放在記憶體的低位址中;

2、如何用圖來說明?

例如,有乙個int型別變數,int a = 1,在32位系統上面,int占用4個位元組,所以將其轉換為二進位制和十六進製制顯示分別為:

二進位制: 00000000 00000000 00000000 00000001

十六進製制: 0x0000000000000001

我們取a的位址為:&a = 0x003ef980;

在記憶體中的分布如下圖: 

如上圖所示:

(1)、資料的低位元組0x01存放在了記憶體的高位址0x003ef983上面,則此時是以大端形式在儲存資料;

(2)、資料的低位址0x01存放在了記憶體的低位址0x003ef980上面,則此時是以小端形式在儲存資料。

3、如何用程式來判斷當前主機是用什麼方式儲存資料的?

用程式來判斷的話,主要有兩種方式來判斷:

(1)、指標法

#include int main(void)

else

getchar();

return 0;

}

執行結果為:   

(2)、聯合法

#include int main(void)

test;

test.a = 0x0102;

if (test.b[0] == 1)

else

getchar();

return 0;

}

執行結果為:  

————————————華麗的風格線————————————————

qq群:西安c/c++開發者,誠邀您的加入

C語言大小端問題

一 概念 大端儲存 乙個數的低位位元組序的內容存放到高位址處,高位位元組序的內容存放在低位址處。小端儲存 乙個數的低位位元組序的內容存放到低位址處,高位位元組序的內容存放在高位址處。舉個例子 include include include intmain printf s n isbigendian...

《C語言深度剖析》 大小端模式判斷

大小端模式介紹 例如 int a 1 a 的值為1,其中變數a佔4個位元組.用16進製表示為0x00000001 四個位元組 16進製制,2位表示乙個位元組 如果是小端模式則記憶體儲存方式如下 低位址0100 0000 高位址如果是大端模式則記憶體儲存方式如下 低位址00 0000 01 高位址 總...

C語言 大小端的問題

在計算機中資料一般都先存在記憶體中,拿32位機來說 系統為記憶體的每乙個位置都分配了乙個位址.位址 從0x00000000開始到0xffffffff 也許你的記憶體沒這麼大 那麼對於小端 little endain 來說,資料0x12345678在記憶體中的映像就是這個樣子的 78 0x000000...