1、什麼是大小端模式?
大端模式
,是指資料的高位元組儲存在記憶體的低位址中,而資料的低位元組儲存在記憶體的高位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理:位址由小向大增加,而資料從高位往低位放;這和我們的閱讀習慣一致。
小端模式
,是指資料的高位元組儲存在記憶體的高位址中,而資料的低位元組儲存在記憶體的低位址中,這種儲存模式將位址的高低和資料位權有效地結合起來,高位址部分權值高,低位址部分權值低。
2、知道大小端有何用?
首先要介紹一下位元組序列,所謂的位元組序列就是大於或者等於兩個位元組型別的資料存放在記憶體中的順序(乙個位元組就不必談序列!)。那麼什麼時候要用到我們去判斷機器是大端模式還是小端模式呢?當我們在跨平台開發或者網路程式設計的時候就要去關心位元組序列了,比如說我們
用機器a和b通訊,如果a和b的端序都是一樣的話,中間自然就不用轉換來轉換去了。但是如果a和b機器的端序不一樣,如果我們不去做相應的轉換,我們傳過去的二進位制序列就是反的!
3、
如何去判斷你的機器是大端模式還是小端模式?
在這裡我提供了簡單的三個方法,如果有**不妥的希望大牛指出。
第一種:
#include
int main(int argc, char *argv)
注:這種方式的定義乙個int型的資料型別,初始化為十六進製制0x12345678,在記憶體中存放的位置從低位到高位,依次為(低位)87654321(高位);再定義乙個佔乙個位元組的char型,然後把int型資料賦值給char型資料,因為char佔乙個位元組,int佔四個位元組,這樣賦值就會丟掉三個位元組,但是這正是我們需要的,如果它列印出78(小端模式),如果列印出12(大端模式)。
第二種:
#include
int main(int argc, char *argv)
注:
這種方式和上面那種方式差不多,只是運用到了指標的知識,原理都一樣
第三種:
#include
typedef union node
node;
int main(int argc, char *argv)
注:這種方式運用到了union(共用體),所謂的共用體,就是共同使用一塊記憶體,共用體的大小是共用體中的所有型別最大的哪乙個,例如上面的共用體中int是四個位元組,char為乙個位元組,那麼這個共用體的大小就是四個位元組。當然這個要看你的系統是多少位的(在這裡我說的是32位系統,64位系統int是8個位元組),先對共用體中的int型資料i賦初值,然後在用char去訪問乙個位元組的資料,如果列印出結果為78(小端模式),反之為大端模式。
C語言判斷大小端模式
1.大端模式,是指資料的低位儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中 小端模式相反 2.為什麼有大小端之分?因為在計算機系統中,儲存是以位元組為單位的,每個位址單元都對應著乙個位元組,乙個位元組 8bit。在c語言中除了8bit的char之外,還有16bit的short型,32b...
大 小端模式的測試
大端模式 是指資料的低位儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中 小端模式 是指資料的低位儲存在記憶體的低位址中,而資料的高位儲存在記憶體的高位址中。採用大端方式進行資料存放符合人類的正常思維,而採用小端方式進行資料存放利於計算機處理。到目前為止,採用大端或者小端進行資料存放,其...
大 小端模式的測試
大端模式 是指資料的低位儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中 採用大端方式進行資料存放符合人類的正常思維,而採用小端方式進行資料存放利於計算機處理。到目前為止,採用大端或者小端進行資料存放,其孰優孰劣也沒有定論。嵌入式系統開發者應該對little endian和big end...