一、大小端
1、為啥會有大小端
在計算機系統中以位元組為單位,每個位址單位都有乙個位元組(乙個位元組8個bit位)。在c語言中,有char(8bit)、short(16bit)、long(32bit,具體看編譯器)。對於位數大於8的處理器,不如16位或者32位的處理器,由於暫存器寬度大於乙個位元組,那麼必然存在乙個如何將多個位元組安排的問題。so就有了大端儲存模式和小端儲存模式
2、大小端的概念區分
(1)大端(big_endian):資料的高位元組儲存在記憶體的低位址處,資料的低位元組儲存在記憶體的高位址。這個儲存模式類似將資料當做字串處理:位址由小到大增加,資料由高到低存放。
(2)小端(little_endian):資料的高位元組儲存在記憶體的高位址處,資料的低位元組儲存在記憶體的低位址。這樣子的儲存模式和我們邏輯思維方式一樣,將位址的高低位和資料權位有效對應起來,高位址對應權值高的,低位址對應權值低的。
二、**測試大小端
(1)聯合體union:(because聯合體(union)的存放順序是所有成員都是從低位址開始存放,這樣就可以區分出是大端or小端)
int checksystem()
c; // 將1放到i的低位去
c.i = 1;
//倘若ch的最低位是1,則證明機器為小端儲存模式;否則反之
return (c.ch == 1);
}
(2)指標強轉解引用:
int checksystem()
return
0;}
完整**:
#include
//方法一:聯合體union
int checksystem()
c; // 將1放到i的低位去
c.i = 1;
//倘若ch的最低位是1,則證明機器為小端儲存模式;否則反之
return (c.ch == 1);
}// 方法二:強轉指標並且解引用
int checksystem()
return0;}
int main()
經過測試,小可愛我的機器是小端儲存模式哦,你的嘞??? 如何測試機器的大小端儲存
大端模式,是指資料的高位元組儲存在記憶體的低位址中,而資料的低位元組儲存在記憶體的高位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 這和我們的閱讀習慣一致。小端模式,是指資料的高位元組儲存在記憶體的高位址中,而資料的低位元組儲存在記憶體的低位址中,這...
測試機器大小端儲存的方法
小端模式 little endian 是指資料的高位元組儲存在記憶體的高位址中,而資料的低位元組儲存在記憶體的低位址中,這種儲存模式將位址的高低和資料位權有效地結合起來,高位址部分權值高,低位址部分權值低,和我們的邏輯方法一致。大端模式 big endian 是指資料的高位元組,儲存在記憶體的低位址...
機器的大小端
用c語言寫程式時需要知道是大端模式還是小端模式。所謂的大端模式 be big endian 是指資料的低位儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中 低對高,高對高 最直觀的位元組序,因為不要考慮對應關係 只需要把記憶體位址從左到右按照由低到高的順序寫出,把值按照通常的高位到低位的...