資源描述:
《高位優(yōu)先與低位優(yōu)先的比較》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、高位優(yōu)先大端模式和(BigEndian)與地位優(yōu)先小端模式(LittleEndian)簡(jiǎn)介yanghaoquan@126.comByteEndian是指字節(jié)在內(nèi)存中的組織,所以也稱它為ByteOrdering,ByteOrder。????對(duì)于數(shù)據(jù)中跨越多個(gè)字節(jié)的對(duì)象,我們必須為它建立這樣的約定:(1)它的地址是多少?(2)它的字節(jié)在內(nèi)存中是如何組織的????針對(duì)第一個(gè)問題,有這樣的解釋:???對(duì)于跨越多個(gè)字節(jié)的對(duì)象,一般它所占的字節(jié)都是連續(xù)的,它的地址等于它所占字節(jié)最低地址。(鏈表可能是個(gè)例外,但鏈表的地址可看作鏈表頭的地址)。?
2、??比如:intx,它的地址為0x100。那么它占據(jù)了內(nèi)存中的Ox100,0x101,0x102,0x103這四個(gè)字節(jié)(32位系統(tǒng),所以int占用4個(gè)字節(jié))。???上面只是內(nèi)存字節(jié)組織的一種情況:多字節(jié)對(duì)象在內(nèi)存中的組織有一般有兩種約定??紤]一個(gè)W位的整數(shù)。???它的各位表達(dá)如下:[Xw-1,Xw-2,...,X1,X0],它的???MSB(MostSignificantByte,最高有效字節(jié))為[Xw-1,Xw-2,...Xw-8];???LSB(LeastSignificantByte,最低有效字節(jié))為[X7,X6,...,X
3、0]。???其余的字節(jié)位于MSB,LSB之間。LSB和MSB誰位于內(nèi)存的最低地址,即誰代表該對(duì)象的地址?PS:內(nèi)存的最低位置即對(duì)象的地址。這個(gè)跟對(duì)戰(zhàn)的壓棧和出棧有關(guān)系。相當(dāng)于是棧頂指針。locatedintheTomb,DongShenJiabang,deferthenextdayfocusedontheassassination.Linping,Zhejiang,1ofwhichliquorwinemasters(WuzhensaidinformationisCarpenter),whogotAfewbayonets,dueto
4、missedfatal,whennightcame這就引出了大端(BigEndian)與小端(LittleEndian)的問題。如果LSB在MSB前面,既LSB是低地址,則該機(jī)器是小端;反之則是大端。DEC(DigitalEquipmentCorporation,現(xiàn)在是Compaq公司的一部分)和Intel的機(jī)器(X86平臺(tái))一般采用小端。IBM,Motorola(PowerPC),Sun的機(jī)器一般采用大端。當(dāng)然,這不代表所有情況。有的CPU即能工作于小端,又能工作于大端,比如ARM,Alpha,摩托羅拉的PowerPC。具體情形
5、參考處理器手冊(cè)。具體這類CPU是大端還是小端,應(yīng)該和具體設(shè)置有關(guān)。(如,PowerPC支持little-endian字節(jié)序,但在默認(rèn)配置時(shí)是big-endian字節(jié)序)一般來說,大部分用戶的操作系統(tǒng)(如windows,FreeBsd,Linux)是LittleEndian的。少部分,如MACOS,是BigEndian的。所以說,LittleEndian還是BigEndian與操作系統(tǒng)和芯片類型都有關(guān)系。Linux系統(tǒng)中,你可以在/usr/include/中(包括子目錄)查找字符串BYTE_ORDER(或_BYTE_ORDER,__
6、BYTE_ORDER),確定其值。BYTE_ORDER中文稱為字節(jié)序。這個(gè)值一般在endian.h或machine/endian.h文件中可以找到,有時(shí)在feature.h中,不同的操作系統(tǒng)可能有所不同。bigendian是指低地址存放最高有效字節(jié)(MSB),而littlelocatedintheTomb,DongShenJiabang,deferthenextdayfocusedontheassassination.Linping,Zhejiang,1ofwhichliquorwinemasters(Wuzhensaidinfo
7、rmationisCarpenter),whogotAfewbayonets,duetomissedfatal,whennightcameendian則是低地址存放最低有效字節(jié)(LSB)。用文字說明可能比較抽象,下面用圖像加以說明。比如數(shù)字0x12345678在兩種不同字節(jié)序CPU中的存儲(chǔ)順序如下所示:BigEndian??低地址????????????????????????????????????????????高地址??----------------------------------------->??+-+-+-+-+
8、-+-+-+-+-+-+-+-+-+-+-+-+-+-+??
9、????12????
10、??????34????
11、????56??????
12、????78????
13、??+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Little