98国产精品综合一区二区三区,国产福利视频,男人添女人囗交做爰视频,日本免费一区二区三区视频观看

您好,歡迎進入深圳市穎特新科技有限公司官方網(wǎng)站!

您現(xiàn)在的位置:首頁 新聞資訊 >> 新聞頭條 >> 理解字節(jié)序(轉)
新聞資訊
NEWS INFORMATION

理解字節(jié)序(轉)

發(fā)布時間:2019-05-22

數(shù)據(jù)在存放到內存里的時候,有兩種存放方式,即:Big Endian(大端模式) 和 Little Endian(小端模式)

這兩個存取方式決定了內存存放數(shù)據(jù)的原則是 高高低低 原則 還是 高低低高 原則。

高高低低--內存中的高位存放數(shù)據(jù)的高位,內存中的低位存放數(shù)據(jù)的低位(Little Endian 

高低低高--內存中的高位存放數(shù)據(jù)的低位,內存中的低位存放數(shù)據(jù)的高位(Big Endian 

比如:我有一個數(shù)據(jù),是0xA5A1,它在存放到內存中是怎樣存放的呢?因為在我們平時的書寫中,A5是高位,A1在低位,存放到內存中的時候,A1存放在0x4000這個位置,而A5存放在0x4001這個位置,高位存放在內存的高地址中,低位存放在低地址中,這種方式就是Little Endian 。

下面再粘一篇網(wǎng)友的總結的文章來詳細闡述一下這兩種方式的區(qū)別:

                  Big Endian  和 Little Endian 模式的區(qū)別(轉載)

談到字節(jié)序的問題,必然牽涉到兩大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。PowerPC系列采用big endian方式存儲數(shù)據(jù),而x86系列則采用little endian方式存儲數(shù)據(jù)。那么究竟什么是big endian,什么又是little endian呢?

其實big endian是指低地址存放最高有效字節(jié)(MSB),而little endian則是低地址存放最低有效字節(jié)(LSB)。

    用文字說明可能比較抽象,下面用圖像加以說明。比如數(shù)字0x12345678在兩種不同字節(jié)序CPU中的存儲順序如下所示:

 

Big Endian

 

   低地址                                            高地址

   ----------------------------------------------------------------------------->

   |     12     |      34    |     56      |     78    |

 

Little Endian

 

   低地址                                            高地址

   ----------------------------------------------------------------------------->

   |     78     |      56    |     34      |     12    |

 

     從上面兩圖可以看出,采用big endian方式存儲數(shù)據(jù)是符合我們人類的思維習慣的。

     為什么要注意字節(jié)序的問題呢?你可能這么問。當然,如果你寫的程序只在單機環(huán)境下面運行,并且不和別人的程序打交道,那么你完全可以忽略字節(jié)序的存在。但是,如果你的程序要跟別人的程序產生交互呢?尤其是當你把你在微機上運算的結果運用到計算機群上去的話。

在這里我想說說兩種語言。C/C++語言編寫的程序里數(shù)據(jù)存儲順序是跟編譯平臺所在的CPU相關的,而JAVA編寫的程序則唯一采用big endian方式來存儲數(shù)據(jù)。試想,如果你用C/C++語言在x86平臺下編寫的程序跟別人的JAVA程序互通時會產生什么結果?就拿上面的0x12345678來說,你的程序傳遞給別人的一個數(shù)據(jù),將指向0x12345678的指針傳給了JAVA程序,由于JAVA采取big endian方式存儲數(shù)據(jù),很自然的它會將你的數(shù)據(jù)翻譯為0x78563412。因此,在你的C程序傳給JAVA程序之前有必要進行字節(jié)序的轉換工作。

所有網(wǎng)絡協(xié)議也都是采用big endian的方式來傳輸數(shù)據(jù)的。所以有時我們也會把big endian方式稱之為網(wǎng)絡字節(jié)序。當兩臺采用不同字節(jié)序的主機通信時,在發(fā)送數(shù)據(jù)之前都必須經過字節(jié)序的轉換成為網(wǎng)絡字節(jié)序后再進行傳輸。ANSI C中提供了下面四個轉換字節(jié)序的宏。

一道C語言的試題:請寫一個C函數(shù),若處理器是Big_endian的,則返回0;若是Little_endian的,則返回1。

解答:

int checkCPU()

{  

{   

union w   

{   

int a;    

char b;   

} c;   

c.a = 1;   

return (c.b == 1);  

}

}

 

嵌入式系統(tǒng)開發(fā)者應該對Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU對操作數(shù)的存放方式是從低字節(jié)到高字節(jié),而Big-endian模式對操作數(shù)的存放方式是從高字節(jié)到低字節(jié)。例如,16bit寬的數(shù)0x1234在Little- endian模式CPU內存中的存放方式(假設從地址0x4000開始存放)為:

內存地址

存放內容

0x4000

0x34

0x4001

0x12

  而在Big-endian模式CPU內存中的存放方式則為:

內存地址

存放內容

0x4000

0x12

0x4001

0x34

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

內存地址

存放內容

0x4000

0x78

0x4001

0x56

0x4002

0x34

0x4003

0x12

  而在Big-endian模式CPU內存中的存放方式則為:

內存地址

存放內容

0x4000

0x12

0x4001

0x34

0x4002

0x56

0x4003

0x78

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

低位字節(jié)存放低位還是高位,如果是低位,則為小段,如果為高位,則為大端,人一般從從左向右讀,所以低位存放著高位數(shù)據(jù),一般很適合大端很適合人們的閱讀。

聯(lián)系方式0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

我们的日子电视剧免费观看完整版| 性20分钟一次| 伊人成色综合人夜夜久久| 少妇高潮毛片色欲AVA片| 久久日本片精品AAAAA国产| 乌克兰极品少妇xxxx做受| 湿润手指揉捏调教h女友| 男朋友一晚弄了我5次正常吗| 无码av久久久久久久久| 午夜欧美精品久久久久久久| 丰满女人又爽又紧又丰满| 国产大学生粉嫩无套流白浆| 娇妻互换经典小说| 国产50部艳色禁片无码| 日韩av无码一区二区三区不卡| 边做饭边被躁国产| 国产chinese男男gay| 国产在线观看无码免费视频| 京东app下载安装官网免费下载| 人妻妺妺窝人体色www聚色窝| 电击惩罚花蒂榨乳调教小说| 大胸美女视频| sm调教室虐男受调教h打开腿| 寡妇两腿间黑黑的毛毛是什么| 精品乱子伦一区二区三区| 亚欧洲精品在线视频免费观看| 无颜之月在线看| 亚洲欧美成人无码久久久| 国子监来了个女弟子电视剧免费观看| 國産麻豆av天美傳媒| 美国十次导航| 太粗太硬小寡妇受不了视频| 毛耸耸亚洲熟妇性xxxx交潮喷| 偷窥 性别 瘾 xxxxx| 美女扒开尿口让男人桶| 丰满人妻熟妇乱偷人无码| 老校长不戴套玩新婚老师| 全免费a级毛片免费看| 国产a级毛片| 亚洲av人无码激艳猛片服务器| 性色av一区二区三区|