强奸久久久久久久|草草浮力在线影院|手机成人无码av|亚洲精品狼友视频|国产国模精品一区|久久成人中文字幕|超碰在线视屏免费|玖玖欧洲一区二区|欧美精品无码一区|日韩无遮一区二区

首頁(yè) > 廠商 > 經(jīng)驗(yàn) > 大端存儲(chǔ)和小端存儲(chǔ),8051單片機(jī)是大端存儲(chǔ)還是小端存儲(chǔ)

大端存儲(chǔ)和小端存儲(chǔ),8051單片機(jī)是大端存儲(chǔ)還是小端存儲(chǔ)

來(lái)源:整理 時(shí)間:2024-09-20 07:04:20 編輯:智能門(mén)戶 手機(jī)版

本文目錄一覽

1,8051單片機(jī)是大端存儲(chǔ)還是小端存儲(chǔ)

大端存儲(chǔ)16位INT型數(shù)據(jù)和32位long型數(shù)據(jù)都是。數(shù)據(jù)的低位保存在內(nèi)存的高地址中,數(shù)據(jù)的高位保存在內(nèi)存的低地址中.
我的博客上有一篇關(guān)于仿真器的文章,上面就這個(gè)問(wèn)題進(jìn)行了很詳細(xì)的分析,你可以去看看.

8051單片機(jī)是大端存儲(chǔ)還是小端存儲(chǔ)

2,大端存儲(chǔ)和小端存儲(chǔ)的區(qū)別

大端模式就是存放在高地址上。高位存放在地址上。  小端模式就是地位存放在低地址上。高位存放在高地址上。  例如,16bit寬的數(shù)0x1234在Little-endian模式CPU內(nèi)存中的存放方式(假設(shè)從地址0x4000開(kāi)始存放)為:  內(nèi)存地址 0x4000 0x4001  存放內(nèi)容 0x34 0x12  而在Big-endian模式CPU內(nèi)存中的存放方式則為:  內(nèi)存地址 0x4000 0x4001  存放內(nèi)容 0x12 0x34

大端存儲(chǔ)和小端存儲(chǔ)的區(qū)別

3,關(guān)于大端小端存儲(chǔ)和內(nèi)存的的使用

1、大端(big endian)與小端(little endian)指的是“字節(jié)序”,嚴(yán)格的說(shuō),并不是針對(duì)單個(gè)變量。2、后面兩問(wèn)有點(diǎn)模糊,我想你是想說(shuō),連續(xù)的定義兩個(gè)變量吧,具體的地址分配行為是取決于編譯器的,不過(guò)一般來(lái)說(shuō),如果分配在棧上,比如,你在main函數(shù)里面連續(xù)定義連個(gè),一般棧是倒增長(zhǎng)的,即這兩個(gè)變量的地址將會(huì)是又高到低。如果靜態(tài)分配、或者在堆上分配,比如你在main函數(shù)外,全局的連續(xù)的定義兩個(gè)變量,則這兩個(gè)變量的地址將會(huì)是又低到高。
平臺(tái)是32位arm么? 假設(shè)地址從0x00開(kāi)始: 小端: half world:0x00->0xda, 0x01->0x00,共占2bytes world:0x00->0xda, 0x01->0x00, 0x02->0x00, 0x03->0x00,共占4bytes 大端: half world:0x00->0x00, 0x01->0xda,共占2bytes world:0x00->0x00, 0x01->0x00, 0x02->0x00, 0x03->0xda,共占4bytes

關(guān)于大端小端存儲(chǔ)和內(nèi)存的的使用

4,判斷計(jì)算機(jī)是大端存儲(chǔ)還是小端存儲(chǔ)

#include int main() { unsigned char str[4]={1,0,0,0}; unsigned int* i = (unsigned int*) str; if(*i == 1) printf("Little_endian\n"); else if(*i == 1000000) printf("Big_endian\n"); return 0; } 另外,共用體也可以拿來(lái)判斷
采用大小模式對(duì)數(shù)據(jù)進(jìn)行存放的主要區(qū)別在于在存放的字節(jié)順序,大端方式將高位存放在低地址,小端方式將低位存放在高地址。采用大端方式進(jìn)行數(shù)據(jù)存放符合人類的正常思維,而采用小端方式進(jìn)行數(shù)據(jù)存放利于計(jì)算機(jī)處理。到目前為止,采用大端或者小端進(jìn)行數(shù)據(jù)存放,其孰優(yōu)孰劣也沒(méi)有定論。<br><br><br>以上內(nèi)容參考 <a target="_blank">http://sinaurl.cn/hkqdi</a>

5,請(qǐng)教各位什么是大小端模式

端模式,英文j :Endian.該名詞不只是存在于嵌入式之中.在計(jì)算機(jī)業(yè)界,簡(jiǎn)單概要的說(shuō)Endian表示數(shù)據(jù)在存儲(chǔ)器中的存放順序。下文舉例說(shuō)明在計(jì)算機(jī)中大小端模式的區(qū)別。如果將一個(gè)32位的整數(shù)0x12345678存放到一個(gè)整型變量(int)中,這個(gè)整型變量采用大端或者小端模式在內(nèi)存中的存儲(chǔ)由下表所示。為簡(jiǎn)單起見(jiàn),本書(shū)使用OP0表示一個(gè)32位數(shù)據(jù)的最高字節(jié)MSB(Most Significant Byte),使用OP3表示一個(gè)32位數(shù)據(jù)最低字節(jié)LSB(Least Significant Byte)。---------------------------地址偏移 大端模式 小端模式0x00 12(OP0) 78(OP3)0x01 34(OP1) 56(OP2)0x02 56(OP2) 34(OP1)0x03 78(OP3) 12(OP0)---------------------------如果將一個(gè)16位的整數(shù)0x1234存放到一個(gè)短整型變量(short)中。這個(gè)短整型變量在內(nèi)存中的存儲(chǔ)在大小端模式由下表所示。---------------------------------地址偏移 大端模式 小端模式0x00 12(OP0) 34(OP1)0x01 34(OP1) 12(OP0)-------------------------------------由上表所知,采用大小模式對(duì)數(shù)據(jù)進(jìn)行存放的主要區(qū)別在于在存放的字節(jié)順序,大端方式將高位存放在低地址,小端方式將低位存放在高地址。采用大端方式進(jìn)行數(shù)據(jù)存放符合人類的正常思維,而采用小端方式進(jìn)行數(shù)據(jù)存放利于計(jì)算機(jī)處理。到目前為止,采用大端或者小端進(jìn)行數(shù)據(jù)存放,其孰優(yōu)孰劣也沒(méi)有定論。有的處理器系統(tǒng)采用了小端方式進(jìn)行數(shù)據(jù)存放,如Intel的奔騰。有的處理器系統(tǒng)采用了大端方式進(jìn)行數(shù)據(jù)存放,如IBM半導(dǎo)體和Freescale的PowerPC處理器。不僅對(duì)于處理器,一些外設(shè)的設(shè)計(jì)中也存在著使用大端或者小端進(jìn)行數(shù)據(jù)存放的選擇。因此在一個(gè)處理器系統(tǒng)中,有可能存在大端和小端模式同時(shí)存在的現(xiàn)象。這一現(xiàn)象為系統(tǒng)的軟硬件設(shè)計(jì)帶來(lái)了不小的麻煩,這要求系統(tǒng)設(shè)計(jì)工程師,必須深入理解大端和小端模式的差別。大端與小端模式的差別體現(xiàn)在一個(gè)處理器的寄存器,指令集,系統(tǒng)總線等各個(gè)層次中。

6,BIG Endian 和 Little Endian模式的區(qū)別

兩種不同的格式:big-endian和little-endian格式在小端模式中,低位字節(jié)放在低地址,高位字節(jié)放在高地址;在大端模式中,低位字節(jié)放在高地址,高位字節(jié)放在低地址。 如果將一個(gè)32位的整數(shù)0x12345678存放到一個(gè)整型變量(int)中,這個(gè)整型變量(文件內(nèi)容)采用大端或者小端模式在內(nèi)存中的存儲(chǔ) 如果將一個(gè)16位的整數(shù)0x1234存放到一個(gè)短整型變量(short)中。這個(gè)短整型變量在內(nèi)存中的存儲(chǔ)在大小端模式采用大小模式對(duì)數(shù)據(jù)進(jìn)行存放的主要區(qū)別在于【在存放的字節(jié)順序】大端方式將高位存放在低地址,小端方式將低位存放在低地址。
區(qū)別是:big endian可以在最小的地址里存儲(chǔ)一系列符號(hào)中最重要符號(hào)記憶的計(jì)算機(jī),根據(jù)遞減的重要性存儲(chǔ)的方法。little endian用最小的地址儲(chǔ)存最少的重要字節(jié) (而用最大的地址儲(chǔ)存最多的重要字節(jié)) 的計(jì)算機(jī)記憶力。在arm體系中,每個(gè)字單元包含4個(gè)字節(jié)單元或者兩個(gè)半字單元。在字單元中,4個(gè)字節(jié)哪一個(gè)是高位字節(jié),哪一個(gè)是低位字節(jié)則有兩種不同的格式:big-endian和little-endian格式。在小端模式中,低位字節(jié)放在低地址,高位字節(jié)放在高地址;在大端模式中,低位字節(jié)放在高地址,高位字節(jié)放在低地址。如果將一個(gè)32位的整數(shù)0x12345678(如用ultraedit打開(kāi)某個(gè)文件看到的第一行頭四個(gè)字節(jié)是:"00000000h:12 34 56 78")存放到一個(gè)整型變量(int)中,這個(gè)整型變量(文件內(nèi)容)采用大端或者小端模式在內(nèi)存中的存儲(chǔ)。對(duì)于文件內(nèi)容 0x12345678,把前面("12")的看為高端字節(jié),后面("78")的看為低端字節(jié),那么可以使用"高高低低"(little endian),"高低高低"(big endian)的口訣。直觀的區(qū)分,如果發(fā)現(xiàn)內(nèi)存的內(nèi)容和文件的內(nèi)容在順序上以4個(gè)字節(jié)顛倒,那么他就是little edian。實(shí)現(xiàn)big endian和little endian主要是由編譯器指定的,通常是在ccflag 加參數(shù),如: -dendian_little,設(shè)定編譯為小端字節(jié)。實(shí)際中用trace 32可以用memory dump查看內(nèi)存內(nèi)容,和寫(xiě)入文件比較后判斷為大端還是小端。如果將一個(gè)16位的整數(shù)0x1234存放到一個(gè)短整型變量(short)中。這個(gè)短整型變量在內(nèi)存中的存儲(chǔ)在大小端模式。采用大小模式對(duì)數(shù)據(jù)進(jìn)行存放的主要區(qū)別在于在存放的字節(jié)順序,大端方式將高位存放在低地址,小端方式將低位存放在低地址。那么該如何判斷cpu是大端模式還是小端模式呢?在c語(yǔ)言中,聯(lián)合體union的存放順序是所有成員都從低地址開(kāi)始存放的。利用這一特點(diǎn),可以用聯(lián)合體變量判斷arm或x86環(huán)境下,存儲(chǔ)系統(tǒng)是是大端還是小端模式。 具體的代碼如下:#include "stdio.h"int main() union w int a; //4 bytes char b; //1 byte } c; c.a=1; if (c.b==1) printf("it is little_endian!/n"); else printf("it is big_endian!/n"); return 1;}
文章TAG:大端存儲(chǔ)8051單片機(jī)大端存儲(chǔ)和小端存儲(chǔ)

最近更新

相關(guān)文章