大 小端模式的測試

2021-08-25 21:37:18 字數 1986 閱讀 6987

大端模式:是指資料的低位儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中

採用大端方式進行資料存放符合人類的正常思維,而採用小端方式進行資料存放利於計算機處理。到目前為止,採用大端或者小端進行資料存放,其孰優孰劣也沒有定論。

嵌入式系統開發者應該對little-endian和big-endian模式非常了解。採用little-endian模式的cpu對運算元的存放方式是從低位元組到高位元組,而big-endian模式對運算元的存放方式是從高位元組到低位元組。

16bit寬的數0x1234

在little-endian模式cpu記憶體中的存放方式(假設從位址0x4000開始存放)為:

記憶體位址

0x4000

0x4001

存放內容

0x34

0x12

在big-endian模式cpu記憶體中的存放方式則為:

記憶體位址

0x4000

0x4001

存放內容

0x12

0x34

32bit寬的數0x12345678

在little-endian模式cpu記憶體中的存放方式(假設從位址0x4000開始存放)為:

記憶體位址

0x4000

0x4001

0x4002

0x4003

存放內容

0x78

0x56

0x34

0x12

而在big-endian模式cpu記憶體中的存放方式則為:

記憶體位址

0x4000

0x4001

0x4002

0x4003

存放內容

0x12

0x34

0x56

0x78

在c語言

中,不同於結構體,共用體(聯合體)中的幾種不同型別的變數存放在同一段記憶體單元中。利用這一特點,可以用聯合體變數判斷arm

或x86

環境下,儲存系統是是大端還是小端模式。

#include "stdio.h"

int main()

c; //

聯合體的最大位元組數與其中所佔最大位元組的成員一樣大。

c.a=1;

if (c.b==1)

printf("it is little_endian!\n");

else

printf("it is big_endian!\n");

return 1;

}說明:

1 在c

中,聯合體(共用體)的資料成員都是從低位址開始存放。

2 若是小端模式,由低位址到高位址c.a

存放為0x01 00 00 00

,c.b

被賦值為0x01

;————————————————————————————

位址0x00000000 0x00000001 0x00000002 0x00000003

c.a 01 00 00 00

c.b 01

————————————————————————————

3 若是大端模式,由低位址到高位址

c.a存放為

0x00 00 00 01

, c.b

被賦值為

0x0 ;

————————————————————————————

位址 0x00000000 0x00000001 0x00000002 0x00000003

c.a 00 00 00 01

c.b 00

————————————————————————————

4 根據

c.b的值的情況就可以判斷

cpu的模式了,在

xp 環境下的

intel cpu

是小端模式,用

ads可測試

arm 920t

也是小段模式!

大 小端模式的測試

大端模式 是指資料的低位儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中 小端模式 是指資料的低位儲存在記憶體的低位址中,而資料的高位儲存在記憶體的高位址中。採用大端方式進行資料存放符合人類的正常思維,而採用小端方式進行資料存放利於計算機處理。到目前為止,採用大端或者小端進行資料存放,其...

大 小端模式的測試

大端模式 是指資料的低位儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中 採用大端方式進行資料存放符合人類的正常思維,而採用小端方式進行資料存放利於計算機處理。到目前為止,採用大端或者小端進行資料存放,其孰優孰劣也沒有定論。嵌入式系統開發者應該對little endian和big end...

測試本機的大小端模式

1.什麼是大小端模式?區別?小端儲存模式和大端儲存模式 如數字0x1234,低位元組位是0x34,高位元組位是0x12。假設從位址0x4000處開始存放 記憶體位址 小端模式 little endian 大端模式 big endian 0x4000 0x34 0x12 0x4001 0x12 0x3...