㈠ 大端模式、小端模式和MSB、LSB是一個概念嗎兩者有何區別
在網路通信方面,大家說的更多的 是:「Big-Endian」和「Small-Endian」的問題。
指的都是對於多位元組的數據類型(比如4位元組的32位整數),其多個位元組的順序問題,是最高位元組在前(Big-Endian)還是最低位元組在前 (Small-Endian)。
比如對於123456789這個整數,其16進制為0x075BCD15,那麼按照Big-Endian的方式,它在網路上傳輸(或者在內存里存儲)的4 個位元組依次是:07 4B CD 15,而Small-Endian的順序正相反,是:15 CD 4B 07。
MSB 和LSB 雖然跟這個事情看起來有點相似,但不是一回事。通常,一個晶元的管腳中,對於一個多 比特的信號,比如32根的地址線,從低開始按0到31編個號。MSB 就是31,LSB 就 是0。那麼如果標記為:ADDR[31:0]就是MSB first的方式,如果標記為ADDR[0:31]就是LSB first的方式。
㈡ 單片機的flash當EEPROM用要分大端小端么>
區分單片機是大小端:
1、差晶元相關資料即可
2、程序判斷,簡單描述如下
int a=0x1234;
char *p=&a;
if(*p == 0x34) printf("小端");
else printf("大端");
單片機硬體規定的,比如某些arm晶元就有外圍引腳用高低電平配置晶元是大端還是小端工作
㈢ 大端模式和小端模式
具體如下:

1、大端模式:
大端模式,是指數據的高位,保存在內存的低地址中,而數據的低位,保存在內存的高地址中,這樣的存儲模式類似於把數據當作字元串順序處理。
地址由小向大增加,而數據從高位往低位放;小端模式,是指數據的高位保存在內存的高地址中,而數據的低位保存在內存的低地址中,這種存儲模式將地址的高低和數據位權有效地結合起來,高地址部分權值高,低地址部分權值低,和我們的邏輯方法一致。
在大端模式下,前16位應該這樣讀: e6 84 6c 4e ( 假設int佔4個位元組)。
記憶方法: 地址的增長順序與值的增長順序相反。
2、小端模式例子:
0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000。
0000440: b484 6c4e 004e ed00 0000 0000 0100 0000。
在小端模式下,前16位應該這樣讀: 4e 6c 84 e6( 假設int佔4個位元組)。
記憶方法: 地址的增長順序與值的增長順序相同。
大小端模式:
為什麼會有大小端模式之分呢?這是因為在計算機系統中,我們是以位元組為單位的,每個地址單元都對應著一個位元組,一個位元組為 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處理器還可以由硬體來選擇是大端模式還是小端模式。
㈣ 關於51單片機的小問題
你不是小女子嗎?何來的蛋疼啊?
你把那個t,還有那個i,聲明成unsigned char類型的,不要用unsigned int類型的。
造成這種結果,主要是單片機的大小端格式問題,我們用的低級的單片機,多數是小端格式的,而51單片機,因為源自Intel,所以,兼容了CPU的特點,是大端格式的。這就造成了printf()的列印問題,主要的原因是Printf沒有進行相應的大小端格式的移植。
有關大小端,你可以網路一下。
㈤ 大小端模式的簡介
所謂的大端模式(Big-endian),是指數據的高位元組,保存在內存的低地址中,而數據的低位元組,保存在內存的高地址中,這樣的存儲模式有點兒類似於把數據當作字元串順序處理:地址由小向大增加,而數據從高位往低位放;
例子:
0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000
0000440: b484 6c4e 004e ed00 0000 0000 0100 0000
在大端模式下,前32位應該這樣讀: e6 84 6c 4e ( 假設int佔4個位元組)
記憶方法: 地址的增長順序與值的增長順序相同 所謂的小端模式(Little-endian),是指數據的高位元組保存在內存的高地址中,而數據的低位元組保存在內存的低地址中,這種存儲模式將地址的高低和數據位權有效地結合起來,高地址部分權值高,低地址部分權值低,和我們的邏輯方法一致。
例子:
0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000
0000440: b484 6c4e 004e ed00 0000 0000 0100 0000
在小端模式下,前32位應該這樣讀: 4e 6c 84 e6( 假設int佔4個位元組)
記憶方法: 地址的增長順序與值的增長順序相反 對於0x11223344 儲存如下
下面這段代碼可以用來測試一下你的編譯器是大端模式還是小端模式:
short int x;
char x0,x1;
x=0x1122;
x0=((char*)&x)[0]; //低地址單元
x1=((char*)&x)[1]; //高地址單元
若x0=0x11,則是大端; 若x0=0x22,則是小端......
上面的程序還可以看出,數據定址時,用的是低位位元組的地址。 #definesw16(x)((short)((((short)(x)&(short)0x00ffU)<<8)|(((short)(x)&(short)0xff00U)>>8)))

㈥ 關於單片機大小端的問題
① 所謂小端存儲,就是低地址存儲低位元組。例如一個32位的數據0x12345678,在存儲器中指定地址依次保存為 0x78、0x56、0x34、0x12。如果老師教給你們的程序需要從8位介面的NOR中讀數據並直接拼裝,順序讀或逆序讀其實都是可以的,反正程序里都要完成拼裝。
② 連續讀取的時候一般地址遞增。不過這也不一定,要看你的實際需求而定。
㈦ 大小端模式的大小端現階段狀況
目前Intel的80x86系列晶元是唯一還在堅持使用小端的晶元,而MIPS和ARM等晶元要麼採用全部大端的方式儲存,要麼提供選項支持大端——可以在大小端之間切換。另外,對於大小端的處理也和編譯器的實現有關,在C語言中,默認是小端(但在一些對於單片機的實現中卻是基於大端,比如Keil 51C),Java是平台無關的,默認是大端。在網路上傳輸數據普遍採用的都是大端。

㈧ 請問為什麼要地址對齊,還有大端模式小端模式究竟有什麼影響!
大小端問題對於8bit對齊的系統沒有什麼影響,但是對於16bit及以上操作影響甚大,需要慎重考慮,因為你存的可能完全不是你要的東西了。
㈨ 什麼是大小端模式 大小端模式的現狀
所謂的大端模式(Big-endian),是指數據的高位元組,保存在內存的低地址中,而數據的低位元組,保存在內存的高地址中,這樣的存儲模式有點兒類似於把數據當作字元串順序處理:地址由小向大增加,而數據從高位往低位放