詳解大端模式和小端模式

2021-08-09 08:59:04 字數 1070 閱讀 3626

一, 什麼是大端和小端

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協議規定為大端模式,為了跨平台通訊,還...