首先請看定義:
a) little-endian就是低位位元組排放在記憶體的低位址端,高位位元組排放在記憶體的高位址端。
b) big-endian就是高位位元組排放在記憶體的低位址端,低位位元組排放在記憶體的高位址端。
舉例說明:假設變數x型別為int,位於位址0x100處,x的十六進製制表示形式為0x01234567。位址範圍0x100~0x103。則該變數在不同機器記憶體中的分布如下圖所示:
若需用程式驗證系統是大端模式還是小端模式,有兩種方法
1.利用聯合體的性質
因為聯合體中的成員是共享記憶體的,並且資料是從低位址存放的,可以利用這一性質判斷。
typedef union
u;int checkcpu1() //若是小端則返回1,否則返回0
由於short佔2位元組,而char佔1位元組,當對c賦值為1時,若系統為小端模式,則在系統中存放方式為:
000000001
000000000
那麼當取a的值時,a的整型值必定為1;否則為0.
2.強制取低位址單元的資料
int checkcpu2()
很顯然,若是小端模式,指標p指向的單元裡面的資料整型值必為0x34,否則為0x12。
測試程式:
#include using namespace std;
typedef union
u;int checkcpu1() //若是小端則返回1,否則返回0
int checkcpu2()
int main(int argc, char *argv)
type;
int main()
大端法與小端法
一 什麼是位元組序 位元組序,顧名思義位元組的順序,再多說兩句就是大於乙個位元組型別的資料在記憶體中的存放順序 乙個位元組的資料當然就無需談順序的問題了 指的是記憶體的高 低位址,計算機在記憶體中存放資料的順序都是從低位址到高位址 高 低位元組 有些文章中稱低位位元組為最低有效位,高位位元組為最高有...
小端法 大端法
小端法little endian 諸如intel的機器就是採用這種規則 高位址存高位資料 大端法big endian 諸如ibm,motoral,sun採用此規則 低位址存高位資料 如需儲存oxeeaabbcc此數 如採用大端法儲存如下 address low high ee aa bb cc 如採...
大端法與小端法簡介及應用
資料在 記憶體 中的 儲存順序 都是 從 低位址 向 高位址 儲存的 首位址 指 編號較少的 位址編號 例 儲存 4個char a1,a2,a3,a4 則 第乙個到 第四個 所佔的 儲存空間位址 依次為 0x101,0x102,0x103,0x104 大端法,小端法 指的是 多位元組的資料 int,...