大端小端模式及其判別方式

2021-08-22 06:15:44 字數 1078 閱讀 1974

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協議規定為大端模式,為了跨平台通訊,還...