當前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀] 開頭講個有關(guān) 大端小端的故事: 端模式(Endian)的這個詞出自Jonathan Swift書寫的《格列佛游記》。這本書根據(jù)將雞蛋敲開的方法不同將所有的人分為兩類,從圓頭開始將雞

開頭講個有關(guān) 大端小端的故事:

端模式(Endian)的這個詞出自Jonathan Swift書寫的《格列佛游記》。這本書根據(jù)將雞蛋敲開的方法不同將所有的人分為兩類,從圓頭開始將雞蛋敲開的人被歸為Big Endian,從尖頭開始將雞蛋敲開的人被歸為Littile Endian。小人國的內(nèi)戰(zhàn)就源于吃雞蛋時是究竟從大頭(Big-Endian)敲開還是從小頭(Little-Endian)敲開。在計算機業(yè)Big Endian和Little Endian也幾乎引起一場戰(zhàn)爭。

我們知道在內(nèi)存中數(shù)據(jù)是以字節(jié)為單位進行存儲的,每個地址單元對應(yīng)著一個字節(jié)(byte),一個字節(jié)為8位(bite)。但是很多時候數(shù)據(jù)除了8bit額char外,還有16bit的short,32位的long型(要看具體的編譯器),必然存在多字節(jié)安排的問題。不同的計算機存放多字節(jié)值的順序不同,有些機器在起始地址存放低位字節(jié)(低位先存),即小端模式;有的機器在起始地址存放高位字節(jié)(高位先存),即大端模式?;贗ntel的CPU,采用的是低位先存。而KEIL C51則為大端模式。大端小端對應(yīng)著數(shù)據(jù)在存儲器中的存放順序。

同時,在網(wǎng)絡(luò)傳輸中,網(wǎng)絡(luò)協(xié)議需要指定網(wǎng)絡(luò)字節(jié)順序,TCP/IP協(xié)議中使用16位整數(shù)和32位整數(shù)的高位先存模式,對應(yīng)我們的大端模式。

下面是兩個具體例子:

16bit寬的數(shù)0x1234在Little-endian模式(以及Big-endian模式)CPU內(nèi)存中的存放方式(假設(shè)從地址0x4000開始存放)為:

32bit寬的數(shù)0x12345678在Little-endian模式以及Big-endian模式)CPU內(nèi)存中的存放方式(假設(shè)從地址0x4000開始存放)為:

聯(lián)合體union的存放順序是所有成員都從低地址開始存放,利用該特性可以輕松地獲得了CPU對內(nèi)存采用Little-endian還是Big-endian模式讀寫。

寫程序判斷處理器是Little-endian模式,還是Big-endian模式,可以通過以下程序:

 1、通過將int強制類型轉(zhuǎn)換成char單字節(jié),通過判斷起始存儲位置。

1 void main(int argc, char **argv)

2 {

3 int i = 1;

4 char *cp = (char *)&i; //前面是指針運算符*,前值類型轉(zhuǎn)換。后面是取地址符號。

5 if (*cp) //如果此時cp指向的內(nèi)存為1的話,則為小端,否則為大端。

6 printf("Little Endiann");

7 else

8 printf("Big Endiann");

9

10 exit(EXIT_SUCCESS);

11 }

注釋:如果小端方式中(i占至少兩個字節(jié)的長度)則i所分配的內(nèi)存最小地址那個字節(jié)中就存著1,其他字節(jié)是0.大端的話則1在i的最高地址字節(jié)處存放,char是一個字節(jié),所以強制將char型量p指向i則p指向的一定是i的最低地址,那么就可以判斷p中的值是不是1(或者為0,也即是假)來確定是不是小端。

或者如下程序:

void main()

{

short int x;

char x0,x1;

x=0x1122;

x0=((char*)&x)[0]; //低地址單元

x1=((char*)&x)[1]; //高地址單元

if (0x11 == x0 && 0x22 == x1)

{

cout << "Big_endian" << endl;

}

else

{

cout << "Little_endian" << endl;

}

}

 2、利用聯(lián)合體union的存放順序是所有成員都從低地址開始存放,判斷處理器模式。

bool checkCPU( )

{

{

union w

{

int a;

char b;

} c;

c.a = 1;

return(c.b ==1);

}

}

以及如下程序:

bool isLittleEndian()

{

union _dword

{

int all;

struct _bytes

{

char byte0;

char pad[3];

}bytes;

}dword;

dword.all=0x87654321;

return (0x21==dword.bytes.byte0);

}

分析:如果你的處理器調(diào)用函數(shù)isLittleEndian返回1,那么說明你的處理器為little endian,否則為big endian.注意,如果在little endian處理器上,byte0和pad按內(nèi)存從低到高的存放順序:LOW->byte0 pad[0] pad[1] pad[2] ->HIGH;0x87654321按內(nèi)存從低到高的存放順序: 0x21 0x43 0x65 0x87, 可見byte0對應(yīng)到0x21。所以通過判斷dword中第一個字節(jié)dword.bytes.byte0是否與0x21相等就可以看出是否是little endian。

1次

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉