小端法與大端法及驗證機器小端還是大端的驗證程式

2021-06-03 02:24:07 字數 936 閱讀 9616

首先請看定義:

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,...