在大端模式下,資料的msb存放在低位址;在小端模式下,資料的lsb 存放在低位址。
一、大端與小端、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:
int checkend()
返回值:大端返回1,小段返回0
程式2:
int checkend()
u;u.a = 1;
if (u.b == 1) return 0;
else return 1;
}返回值:大端返回1,小段返回0
判斷大端小端模式
試題1 請寫乙個 c函式,若處理器是 big endian 的,則返回 0 若是 little endian 的,則返回1 解答 int checkcpu c c.a 1 return c.b 1 剖析 嵌入式系統開發者應該對 little endian 和big endian 模式非常了解。採用 ...
大端模式與小端模式
記憶體 位址 0x3000 0x3001 0x3002 0x3003 0x3004 0x3005 十六進製制數 1234 5678 x 大端模式 資料中的高位位元組資料存放在位址中的低位位置,資料中的低位位元組資料則存放在位址中的高位位置,是正常邏輯順序,方便人的理解。要注意的是 不管是大端模式還是...
大端模式與小端模式
小端機 little endian 大端機 big endian 舉乙個例子,比如數字0x12 34 56 78在記憶體中的表示形式為 使用 union bool islittleendian foo foo.a 1 00 00 00 01 return foo.b 1 保留最前的 00,也即高位位...