日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

程序员面试系列——大小端

發(fā)布時(shí)間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 程序员面试系列——大小端 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

大小端是哪里來的概念

大端、小端是“字節(jié)順序”里面的概念。字節(jié)順序可以分為大端序、小端序、混合序。

什么是字節(jié)順序

“字節(jié)順序”簡(jiǎn)稱為“字節(jié)序”。

在計(jì)算機(jī)系統(tǒng)中,存儲(chǔ)對(duì)象一般是以字節(jié)為單位的,每個(gè)地址單元都對(duì)應(yīng)著一個(gè)字節(jié)。
對(duì)于單字節(jié)對(duì)象,存放方法和傳輸方式一般相同。
對(duì)于多字節(jié)對(duì)象,情況就不同了。我們必須建立兩個(gè)規(guī)則:

  • 這個(gè)對(duì)象的地址是什么
  • 在存儲(chǔ)器中如何排列這些字節(jié)

這個(gè)對(duì)象的地址是什么

在幾乎所有機(jī)器上,多字節(jié)對(duì)象都被存儲(chǔ)為連續(xù)的字節(jié)序列,對(duì)象的地址為所使用字節(jié)中最小的地址。

例如在C語言中,一個(gè)類型為int的變量x地址為0x100.
對(duì)于32位硬件平臺(tái),int類型的變量占4個(gè)字節(jié),那么這4個(gè)字節(jié)將被存儲(chǔ)在存儲(chǔ)器的0x100, 0x101, 0x102, 0x103位置。

在存儲(chǔ)器中如何排列這些字節(jié)

關(guān)于字節(jié)的排列,一般有兩種規(guī)則:小端法(little endian)與大端法(big endian)。

首先介紹兩個(gè)概念。

  • 最高有效字節(jié)(the Most Significant Byte):指多字節(jié)序列中具有最大權(quán)重的字節(jié)。
  • 最低有效字節(jié)(the Least Significant Byte):指多字節(jié)序列中具有最小權(quán)重的字節(jié)。

比如0x123456,最高有效字節(jié)是0x12,最低有效字節(jié)是0x56.

弄清楚了以上概念,我們就可以討論大小端了。

小端(最符合人類思維的字節(jié)序 )

規(guī)則:順著地址增加的方向,按照從最低有效字節(jié)到最高有效字節(jié)的順序存儲(chǔ)。


記憶口訣:高址高字節(jié)
為什么說是最符合人類思維的字節(jié)序?因?yàn)閺倪壿嫷慕嵌葋碚f,高有效位在高地址處,低有效位在低地址處,想起來很自然。

大端(最直觀的字節(jié)序)

規(guī)則:順著地址增加的方向,按照從最高有效字節(jié)到最低有效字節(jié)的順序存儲(chǔ)。

記憶口訣:高址低字節(jié)
為什么說是最直觀字節(jié)序?假設(shè)存儲(chǔ)地址從左到右依次增加,請(qǐng)把這個(gè)對(duì)象讀出來,將你讀的內(nèi)容,從左到右填充內(nèi)到存即可。

舉例

假設(shè)要把對(duì)象0x87654321存儲(chǔ)到地址0x1000處,大小端的區(qū)別如下圖所示:

用C語言編程判斷大小端

解法一

int is_little_endian(void) { int a = 0x12345678; char b = *(char *)&a; if( b == 0x78){ return 1; //小端} else { return 0; //大端} }

解法二

int is_little_endian(void) { union temp { int a; char b; }temp; //聯(lián)合體所有成員共享存儲(chǔ)空間 temp.a = 0x12345678; if( temp.b == 0x78 ){ return 1; //小端} else { return 0; //大端} }

【參考資料】
https://zh.wikipedia.org/wiki/%E5%AD%97%E8%8A%82%E5%BA%8F
http://blog.csdn.net/fuxingwe/article/details/8736262

總結(jié)

以上是生活随笔為你收集整理的程序员面试系列——大小端的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。