大端小端詳解

2021-07-09 12:37:42 字數 2456 閱讀 7006

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

所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而資料的高位儲存在記憶體的高位址中。

儲存資料0x1234,大端小端模式儲存如下:

記憶體位址

0x4000

0x4001

大端模式

0x12

0x34

小端模式

0x34

0x12

這是因為在計算機系統中,我們是以位元組為單位的,每個位址單元都對應著乙個位元組,乙個位元組為8bit。但是在c語言中除了8bit的char之外,還有16bit的short型,32bit的long型(要看具體的編譯器),另外,對於位數大於8位的處理器,例如16位或者32位的處理器,由於暫存器寬度大於乙個位元組,那麼必然存在著乙個如果將多個位元組安排的問題。因此就導致了大端儲存模式和小端儲存模式。例如乙個16bit的short型x,在記憶體中的位址為0x0010,x的值為0x1122,那麼0x11為高位元組,0x22為低位元組。對於大端模式,就將0x11放在低位址中,即0x0010中,0x22放在高位址中,即0x0011中。小端模式,剛好相反。我們常用的x86結構是小端模式,而keil c51則為大端模式。很多的arm,dsp都為小端模式。有些arm處理器還可以由硬體來選擇是大端模式還是小端模式。

3、如何判斷所用的編譯器

是大端還是小端儲存?

(1)#include

void main()

(2)#include

void main()

c;c.a=1;

if(c.b==1)

printf("little_endian!\n");

else 

printf("big_endian!\n");}

此處採用聯合體,聯合體共用儲存空間。總共分配4個位元組,記憶體位址及儲存方式如下。

記憶體位址大端模式小端模式

0x40000x000x01

0x40010x000x00

0x4002

0x00

0x00

0x4003

0x01

0x00

而c.b指向乙個位元組的儲存單元,既:0x4000單元。

(3)//(如果endianness=』l』表示系統為little endian,為』b』表示big endian )。

#include

static union endian_test = };

#define endianness ((char)endian_test.l)

void main()

4、我們所用的個人計算機一般是小端,網路傳輸用的是大端,經常遇到網路位元組序與小端位元組序的轉換。

#include

typdedef unsigned int u_32;

typedef unsigned short u_16;

#define 

bswap_16(x) /

(u16)((

(((u16)

(x))

& 0x00ff)

<

< 8 )

| /(((

(u16)

(x))

& 0xff00)

>

> 8 ) /

)#define bswap_32(x) /

(u32) ( (( ((u32)(x)) & 0xff000000 ) >> 24) | /

(( ((u32)(x)) & 0x00ff0000 ) >> 8 ) | /

(( ((u32)(x)) & 0x0000ff00 ) << 8 ) | /

(( ((u32)(x)) & 0x000000ff ) << 24) /

)u16 bswap16(u16 x)

u32 bswap32(u32 x)

int main(void)

大端小端詳解

用c語言寫程式時需要知道是大端模式還是小端模式。所謂的大端模式,是指資料的低位儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中 所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而資料的高位儲存在記憶體的高位址中。為什麼會有大小端模式之分呢?這是因為在計算機系統中,我們是以位元組為單...

大小端詳解

前言 本篇文章介紹資料儲存的大小端模式,大小端模式起源於吃雞蛋的典故。首先,我們看一下資料在記憶體是怎麼儲存的 從上邊我們可以看出a b在計算機中儲存的是補碼,但是順序卻倒著的,這實際上就是小端儲存 大端儲存模式 是指資料的低位位元組序儲存在記憶體的高位址中,而資料的高位位元組序儲存在記憶體的低位址...

移動端詳解

由裝置型別 監測裝置特性表示式構成。語法 media 裝置型別 all screen and 條件表示式 注 and兩側必須有空格 not放在裝置型別的前面 反向選擇 排除某個範圍 ppi 每英吋所顯示畫素點的密度 ppi值越高 螢幕顯示越清晰 dpi 每英吋所顯示畫素點的個數 dpr 裝置畫素比例...