一, 什麼是大端和小端
big-endian和little-endian的定義如下:
1) little-endian就是低位位元組排列在記憶體的低位址端,高位位元組排放在記憶體的高位址端
2) big-endian就是高位位元組排放在記憶體的低位址端,低位位元組排放在記憶體的高位址端
舉乙個簡單的例子, 比如數字0x12 34 56 78在記憶體中的表示形式為:
二,
以unsigned int value = 0x12345678為例,分別看看在兩種位元組序下其儲存情況,我們可以用unsigned char buf[4]來表示value:
big-endian: 低位址存放高位,如下:
高位址---------------
buf[3] (0x78) -- 低位
buf[2] (0x56)
buf[1] (0x34)
buf[0] (0x12) -- 高位
---------------
低位址little-endian: 低位址存放低位,如下:
高位址---------------
buf[3] (0x12) -- 高位
buf[2] (0x34)
buf[1] (0x56)
buf[0] (0x78) -- 低位
--------------
低位址
如下編寫乙個小的測試程式來判斷機器的位元組序:
聯合體union的存放順序是所有成員都從低位址開始存放,而且所有成員公有一塊最大的儲存空間,
利用該特性可以輕鬆的獲得cpu對記憶體採用little-endian還是big-endian模式都寫。
若處理器是big-endian的,則返回0;若是little-endian的,則返回1
int checkcpuendian()
num;
num.a = 1;
return (num.b == 1);
}}
詳解大端模式和小端模式
一 大端模式和小端模式的起源 關於大端小端名詞的由來,有乙個有趣的故事,來自於jonathanswift的 格利佛遊記 lilliput和blefuscu這兩個強國在過去的36個月中一直在苦戰。戰爭的原因 大家都知道,吃雞蛋的時候,原始的方法是打破雞蛋較大的一端,可以那時的皇帝的祖父由於小時侯吃雞蛋...
詳解大端模式和小端模式
標籤 空格分隔 物件導向技術與c 參考 有部分刪減 關於大端小端名詞的由來,有乙個有趣的故事,來自於jonathan swift的 格利佛遊記 lilliput和blefuscu這兩個強國在過去的36個月中一直在苦戰。戰爭的原因 大家都知道,吃雞蛋的時候,原始的方法是打破雞蛋較大的一端,可以那時的皇...
小端模式和大端模式 大端模式和小端模式
0x123456在記憶體中的儲存方式 大端模式 低位址 小端模式 低位址 不難看出大端模式比較符合人的直觀認識 1.一開始是由於不同架構的cpu處理多個位元組資料的順序不一樣,比如x86的是小段模式,keil c51是大端模式。但是後來網際網路流行,tcp ip協議規定為大端模式,為了跨平台通訊,還...