little endian 和big endian 是cpu 存放資料的兩種不同順序。
對於整型、長整型等資料型別,big endian 認為第乙個位元組是最高位位元組(按照從低位址到高位址的順序存放資料的高位位元組到低位位元組);而little endian 則相反,它認為第乙個位元組是最低位位元組(按照從低位址到高位址的順序存放資料的低位位元組到高位位元組)。
0x12 0x34 0xab 0xcd
如 果我們去讀取乙個位址為0x0000 的四個位元組變數,若位元組序為big-endian,則讀出結果為0x1234abcd;若位元組序位little-endian,則讀出結果為 0xcdab3412。如果我們將0x1234abcd 寫入到以0x0000 開始的記憶體中,則little endian 和big endian 模式的存放結果如下:
位址 0x0000 0x0001 0x0002 0x0003
big-endian 0x12 0x34 0xab 0xcd
little-endian 0xcd 0xab 0x34 0x12
一般來說,x86 系列cpu 都是little-endian 的位元組序,powerpc 通常是big endian,還有的cpu 能通過跳線來設定cpu 工作於little endian 還是big endian 模式。
具體判斷方式**如下:
#include #include int big_or_little_endian()
data;
data.a = 1;
return ( data.b==1 );
/* 聯合體中每次只有乙個變數賦值,且其他值被賦值為同樣的值,所有資料都是從低位址開始儲存.
因為int型資料儲存位址範圍比char型資料大,所以當int型資料儲存到char中會被截斷。
1 = 0x 00 00 00 01;若是小端模式,則低位元組01存放到char中去,結果為1,返回值為1,小端模式;
若是大端模式,則高位元組00存放到char中去,結果為0,返回值為0,大端模式。
*/}int main()
大端模式和小端模式的判別!
大端模式 一般我們較習慣的模式,數值的高位存入低位址中,低位存入高位址中。如在16位的cpu中,乙個整型占有2個位元組,如0x1234,它儲存在儲存器的順序是位址的低位存0x12,高位存0x34 小端模式 與大端模式相反,數值的高位存入高位址,低位存入位址中。如條件同上,0x1234,它的儲存的順序...
判別是大端還是小端
大端序 英 big endian 或稱大尾序。位址增長方向 0x0a 0x0b 0x0c 0x0d 位址增長方向 0x0a0b 0x0c0d 最高的16bit單元0x0a0b儲存在低位。小端序 英 little endian 或稱小尾序。位址增長方向 0x0d 0x0c 0x0b 0x0a 最低位位...
小端模式和大端模式 大端模式和小端模式
0x123456在記憶體中的儲存方式 大端模式 低位址 小端模式 低位址 不難看出大端模式比較符合人的直觀認識 1.一開始是由於不同架構的cpu處理多個位元組資料的順序不一樣,比如x86的是小段模式,keil c51是大端模式。但是後來網際網路流行,tcp ip協議規定為大端模式,為了跨平台通訊,還...