大端模式與小端模式判斷

2021-07-05 14:23:37 字數 937 閱讀 3166

在大端模式下,資料的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,也即高位位...