久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
認識(大端--小端)端模式
[打印本頁]
作者:
51黑黑黑
時間:
2016-2-12 22:31
標題:
認識(大端--小端)端模式
端模式(Endian)的這個詞出自JonathanSwift書寫的《格列佛游記》。這本書根據將雞蛋敲開的方法不同將所有的人分為兩類,從圓頭開始將雞蛋敲開的人被歸為BigEndian,從尖頭開始將雞蛋敲開的人被歸為LittileEndian。小人國的內戰就源于吃雞蛋時是究竟從大頭(Big
-
Endian)敲開還是從小頭(Little
-
Endian)敲開。在計算機業Big Endian和LittleEndian也幾乎引起一場戰爭。在計算機業界,Endian表示數據在存儲器中的存放順序。下文舉例說明在計算機中大小端模式的區別。
如果將一個32位的整數0x12345678存放到一個整型變量(int)中,這個整型變量采用大端或者小端模式在內存中的存儲由下表所示。為簡單起見,這里使用OP0表示一個32位數據的最高字節MSB(MostSignificant Byte),使用OP3表示一個32位數據最低字節LSB(Least SignificantByte)。
地址偏移 大端模式 小端模式
0x00 12(OP0) 78(OP3)
0x01 34(OP1) 56(OP2)
0x02 56(OP2) 34(OP1)
0x03 78(OP3) 12(OP0)
如果將一個16位的整數0x1234存放到一個短整型變量(short)中。這個短整型變量在內存中的存儲在大小端模式由下表所示。
地址偏移 大端模式 小端模式
0x00 12(OP0) 34(OP1)
0x01 34(OP1) 12(OP0)
由上表所知,采用大小模式對數據進行存放的主要區別在于在存放的字節順序,大端方式將高位存放在低地址,小端方式將低位存放在低地址。采用大端方式進行數據存放符合人類的正常思維,而采用小端方式進行數據存放利于計算機處理。到目前為止,采用大端或者小端進行數據存放,其孰優孰劣也沒有定論。
有的處理器系統采用了小端方式進行數據存放,如Intel的奔騰。有的處理器系統采用了大端方式進行數據存放,如IBM半導體和Freescale的PowerPC處理器。不僅對于處理器,一些外設的設計中也存在著使用大端或者小端進行數據存放的選擇。
因此在一個處理器系統中,有可能存在大端和小端模式同時存在的現象。這一現象為系統的軟硬件設計帶來了不小的麻煩,這要求系統設計工程師,必須深入理解大端和小端模式的差別。大端與小端模式的差別體現在一個處理器的寄存器,指令集,系統總線等各個層次中。
判斷大端小端
inti=1;
char*p=(char*)&i;
if(*p==1)
printf("1");
else
printf("2");
大小端存儲問題,如果小端方式中(i占至少兩個字節的長度)則i所分配的內存最小地址那個字節中就存著1,其他字節是0.大端的話則1在i的最高地址字節處存放,char是一個字節,所以強制將char型量p指向i則p指向的一定是i的最低地址,那么就可以判斷p中的值是不是1來確定是不是小端。
請寫一個C函數,若處理器是Big_endian的,則返回0;若是Little_endian的,則返回1
解答:
int checkCPU( )
{
{
unionw
{
int a;
char b;
}c;
c.a= 1;
return(c.b==1);
}
}
剖析:
嵌入式系統開發者應該對Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU對操作數的存放方式是從低字節到高字節,而Big-endian模式對操作數的存放方式是從高字節到低字節。例如,16bit寬的數0x1234在Little-endian模式CPU內存中的存放方式(假設從地址0x4000開始存放)為:
內存地址
0x4000
0x4001
存放內容
0x34
0x12
而在Big-endian模式CPU
內存中的存放方式則為
:
內存地址
0x4000
0x4001
存放內容
0x12
0x34
32bit
寬的數
0x12345678
在
Little-endian
模式
CPU
內存中的存放方式(假設從地址
0x4000
開始存放)為:
內存地址
0x4000
0x4001
0x4002
0x4003
存放內容
0x78
0x56
0x34
0x12
而在
Big-endian
模式
CPU
內存中的存放方式則為:
內存地址
0x4000
0x4001
0x4002
0x4003
存放內容
0x12
0x34
0x56
0x78
聯合體
union
的存放順序是所有成員都從低地址開始存放,面試者的解答利用該特性,輕松地獲得了
CPU
對內存采用
Little-endian
還是
Big-endian
模式讀寫。
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
在线观看av中文字幕
|
欧美电影在线观看网站
|
在线欧美亚洲
|
欧美日韩黄
|
免费视频成人国产精品网站
|
第一色在线
|
中文字幕一区二区三区精彩视频
|
久久久一二三
|
久久人
|
亚洲va欧美va天堂v国产综合
|
亚洲一区二区av
|
99在线播放
|
国产免费视频
|
成人欧美一区二区三区视频xxx
|
欧美日韩中文在线
|
成年人免费网站
|
亚洲欧洲中文
|
亚洲性人人天天夜夜摸
|
热re99久久精品国产99热
|
国产区精品在线观看
|
亚洲精品久久久一区二区三区
|
日本免费一区二区三区四区
|
欧美一级免费看
|
人人亚洲
|
欧美日韩国产精品一区二区
|
国产有码
|
久久精品成人一区
|
www日日日
|
亚洲国产精品成人久久久
|
黑人精品欧美一区二区蜜桃
|
日本精品久久久久
|
在线国产欧美
|
婷婷久久综合
|
国产精品自拍视频网站
|
九九热这里
|
av在线影院
|
欧美精三区欧美精三区
|
久久亚洲美女
|
久久久久久久一区
|
亚洲人成一区二区三区性色
|
综合国产
|