**:
一、大端與小端、msb與lsb
在嵌入式開發中,大端(big-endian)和小端(little-endian)是乙個很重要的概念。假如現有一32位int型數0x12345678,那麼其msb(most significant byte,最高有效位元組)為0x12,其lsb (least significant byte,最低有效位元組)為0x78,在cpu記憶體中有兩種存放方式:(假設從位址0x4000開始存放)
方式1:
記憶體位址
0x4000
0x4001
0x4002
0x4003
存放內容
0x12
0x34
0x56
0x78
方式2:
記憶體位址
0x4000
0x4001
0x4002
0x4003
存放內容
0x78
0x56
0x34
0x12
那麼,方式1的存放形似稱為大端模式(big-endian),方式2的存放形似稱為小端模式(little-endian)。即,在大端模式下,資料的msb存放在低位址;在小端模式下,資料的lsb 存放在低位址。
很多情況下我們都是用一小段測試**來判斷cpu的大小端模式的
(大端-->高尾端,小端-->低尾端)
/**程式1:
返回1表示大端;返回0表示小端
**/int checkendian()
/**程式2:
返回1表示大端,返回0表示小端
**/int checkendian()u;
u.ii=0x11223344;
/**cout<<"binary u.ii=";
int temp;
for (int i=7;i>=0;i--)
cout<
大小端的判斷
在計算機系統中,我們以位元組為儲存單位,每個位址的單元都是對應的乙個位元組,乙個位元組為8bit.在c語言中,不僅僅是乙個位元組來儲存資料,除了乙個位元組的char,還有兩個位元組的short,四個位元組的int,另外對於位數大於8位的處理器,例如32位處理器。由於暫存器的寬度大於乙個位元組的長度,...
大小端的判斷
1 什麼是大小端?大端 資料的低位儲存在記憶體的高位址中,而資料的高位儲存在記憶體的低位址處 小端 資料的低位儲存在記憶體的低位址中,而資料的高位儲存在記憶體的高位址處 2 為什麼要有大小端?為什麼會有大小端模式之分呢?這是因為在計算機系統中,我們是以位元組為單位的,每個位址單元都對應著乙個位元組,...
判斷大小端
int i 1 char p char i if p 1 printf 1 else printf 2 大小端儲存問題,如果小端方式中 i佔至少兩個位元組的長度 則i所分配的記憶體最小位址那個位元組中就存著1,其他位元組是0.大端的話則1在i的最高位址位元組處存放,char是乙個位元組,所以強制將c...