當前位置:首頁 » 存儲配置 » 大端存儲法小端存儲法特點

大端存儲法小端存儲法特點

發布時間: 2023-09-02 01:43:10

㈠ 大小端存儲

在計算機系統中,存儲是以位元組為單位的,每個地址單元都對應著一個位元組,一個位元組=8bit。在C語言中除了8bit的char之外,還有16bit的short型,32bit的long型(要看具體的編譯器)。對於位數大於8位的處理器,例如16位或者32位的處理器,由於寄存器寬度大於一個位元組,如何安排多個位元組的存儲,這就有了大端存儲模式和小端存儲模式。

小端:較高的有效位元組存放在較高的的存儲器地址,較低的有效位元組存放在較低的存儲器地址。

大端:較高的有效位元組存放在較低的存儲器地址,較低的有效位元組存放在較高的存儲器地址。

如果將一個16位的整數0x1234存放到一個短整型變數(short)中。這個短整型變數在內存中的存儲在大小端模式由下表所示。

C語言判斷大小端模式

方法一:

voidIsBigEndian()

{

    shortinta=0x1122; //十六進制,一個數值佔4位charb =  *(char*)&a;//通過將short(2位元組)強制類型轉換成char單位元組,b指向a的起始位元組(低位元組)

    if( b ==0x11) //低位元組存的是數據的高位元組數據

    {

        //是大端模式

    }

    else

    {

        //是小端模式

    }

}

方法二:

voidIsBigEndian() //原理:聯合體union的存放順序是所有成員都從低地址開始存放,而且所有成員共享存儲空間

{

    uniontemp

    {

        shortint a;

        char b;

    }temp;

    temp.a=0x1234;

    if(temp.b==0x12) //低位元組存的是數據的高位元組數據

    {

        //是大端模式

    }

    else

    {

        //是小端模式

    }

}

參考:https://www.jianshu.com/p/152268b0ea19

㈡ 大端存儲和小端存儲哪個與人閱讀有關

大端存儲。
1、大端存舉衡搏帆儲方式和閱讀習慣相同,可以直接讀作正銀做12345678。
2、而小端,則與邏輯習慣相同,因為小端存儲模式將地址的高低和數據位權有效地結合起來,高地址部分權值高,低地址部分權值低,和邏輯方法一致。

㈢ 大端模式和小端模式

具體如下:


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處理器還可以由硬體來選擇是大端模式還是小端模式。

㈣ 大端和小端存儲法是什麼兩者有什麼區別

小端:較高的有效位元組存放在較高的的存儲器地址,較低的有效位元組存放在較低的存儲器地址。
大端:較高的有效位元組存放在較低的存儲器地址,較低的有效位元組存放在較高的存儲器地址。
大端模式就是低位存放在高地址上。高位存放在地址上。
小端模式就是地位存放在低地址上。高位存放在高地址上。
例如,16bit寬的數0x1234在Little-endian模式CPU內存中的存放方式(假設從地址0x4000開始存放)為:
內存地址 0x4000 0x4001
存放內容 0x34 0x12
而在Big-endian模式CPU內存中的存放方式則為:
內存地址 0x4000 0x4001
存放內容 0x12 0x34

㈤ 大端存儲和小端存儲各自的優缺點是什麼

沒有什麼優缺點.

最好輸入輸出流,程序一致用同一種方式,全用big endian,或 little endian. 省去byte 交換。

㈥ 大端存儲法與小端存儲法有什麼不同

大端排序的好處是接收數據的程序可以優先得到數據的最高位,以便快速反應。
比如我有一個控制溫度的上位機程序,該程序接收大端方式編碼的溫度信號0x00fe,對比原來的溫度值,假設是0x0135。那麼在接受第一個位元組0x00的時候,上位機就可以判斷溫度比原來下降了,可以立即發出指令打開加熱器。而對於小端排序的方式,上位機只有在接收到完整的兩個位元組的時候才能做出反應。如果採用串列通信,用只對信號的每一個位元組單獨校驗的話,波特率為9600時,大端編碼下,上位機的響應時間為1ms,小端排序方式下,上位機響應時間為2ms。這時,大端編碼就比小端排序更快。如果需要對完整的通信包進行校驗,則沒有區別。
在串列通信測試程序中,計算機顯示的位元組順序一般就是接收順序。如果用大端編碼的話,測試程序直接就可以顯示出從大到小排列好的數據。而小端排序的方向相反,可視性不好,容易看花眼掉。
結論是:1、串列通信(包括乙太網、wifi、串口、usb等)如果採用大端編碼有時會使系統響應更快速。2、串列通信採用大端編碼有利於調試。
小端排序下,選定一個數據的起點後,只需要重復進位加法就可以實現高精度加法計算。減法也是一樣。數組的第0位固定是最低位。而大端方式下,如果高精度計算的精度可變,就很難確定數組的第0位到底代表多大。不同精度的計算還會產生數據對齊問題。比如早期的16位cpu中,int類型和long類型做加法,用小端排序就很容易從指針位置開始計算。而大端排序則非常復雜。加法運算是非常常用的運算,其性能直接影響程序的整體性能。所以cpu中要採用性能較好的小端排序。
由於cpu本身是小端排序,如果內存和文件也採用小端排序的話,就可以把文件中的數據直接存儲到內存中,再直接把內存中的數據存儲到cpu的寄存器。這樣不僅提高計算機的性能,程序也變得簡單。
結論是:所有直接與硬體有關的代碼都適合按小端排序

㈦ 大端模式和小端模式的區別及如何判斷的存儲器的模式

一個數需要超過一個位元組來存儲時,就有大端和小端的區別,只用一個位元組時,無所謂大小端
低位的放在低地址,也就是小個在前,叫小端,反之叫大端
c和c++需要面對這樣的問題,java等高級語言已經屏蔽這個差異,不需要額外處理
在c中,可以用以下代碼片段來判斷是大端還是小端
union {char c; int i;} u;
u.i = 1;
if(u.c == 1){//小端}
else{//大端}

熱點內容
文件夾目錄鏈接 發布:2025-01-31 08:24:22 瀏覽:948
ftpdos命令上傳 發布:2025-01-31 08:14:44 瀏覽:105
intenumjava 發布:2025-01-31 08:14:37 瀏覽:802
android3x 發布:2025-01-31 08:13:03 瀏覽:600
如何購買安卓版live2d 發布:2025-01-31 08:13:01 瀏覽:279
python交互輸入 發布:2025-01-31 08:12:53 瀏覽:427
requestdatapython 發布:2025-01-31 08:02:01 瀏覽:44
javades加密工具 發布:2025-01-31 07:54:04 瀏覽:244
電話如何配置ip 發布:2025-01-31 07:48:48 瀏覽:300
2021賓士e300l哪個配置性價比高 發布:2025-01-31 07:47:14 瀏覽:656