日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

你了解計算機中大端小端之分嗎?

來源: 責編: 時間:2024-04-02 17:09:15 171觀看
導讀字節序大端字節序小端字節序判斷當前設備大端or小端?尾語哈嘍,大家好,我是呼嚕嚕,前段時間感冒了,好久沒更新文章了,今天我們來聊聊計算機儲存方式大端小端字節序之分在計算機中,無論上層是什么開發語言,到了最底層都是以二
  • 字節序
  • 大端字節序
  • 小端字節序
  • 判斷當前設備大端or小端?
  • 尾語

9Yc28資訊網——每日最新資訊28at.com

哈嘍,大家好,我是呼嚕嚕,前段時間感冒了,好久沒更新文章了,今天我們來聊聊計算機儲存方式大端小端字節序之分9Yc28資訊網——每日最新資訊28at.com

在計算機中,無論上層是什么開發語言,到了最底層都是以二進制的形式存儲運算的;二進制,與我們更熟悉的十進制(由0-9這九個數字組成,逢十進一)不同的是,只有0和1兩個數字,逢二進一9Yc28資訊網——每日最新資訊28at.com

如今的主流計算機,是以以儲存器為中心,存儲器是用來存放數據和程序,下面是架構圖:9Yc28資訊網——每日最新資訊28at.com

圖片圖片9Yc28資訊網——每日最新資訊28at.com

存儲器 包含主存和輔存,其中主存是能直接與CPU交換信息,就是我們熟悉的內存。9Yc28資訊網——每日最新資訊28at.com

字節序

計算機以二進制的形式將數據存到內存中,內存的基本單位是字節Byte, 內存以字節為單位來進行讀寫 。1Byte = 8bit(bit叫位,也叫比特,是用以描述計算機數據量的最小單位)。字節是內存8位為一組,每組比特都會被標記一個數字,這個數字也叫地址,尋址粒度也是字節9Yc28資訊網——每日最新資訊28at.com

一個字節由于8位,如果它只考慮無符號數,它的表示范圍0~255;如果考慮符號,并通過補碼解決0值的問題,只能表示-128~127這個范圍;那么如果超出這個范圍,只能將多個字節連在一起來表示數值。比如C語言中char類型是1個字節的,int類型占用4個字節,double類型會占用8個字節等等9Yc28資訊網——每日最新資訊28at.com

那么多個字節依次存到內存中,就會有順序,這個叫字節序Endianness,也被稱為端序,就是 大于一個字節類型的數據在內存中的存放順序9Yc28資訊網——每日最新資訊28at.com

字節序可以被分為兩類:Big-Endian大端和Little-Endian小端(這也意味著單個字節沒有大小端之分的),我們下文詳細聊聊9Yc28資訊網——每日最新資訊28at.com

大端字節序

大端字節序Big-Endian:數值的高位字節存放在內存的低地址端,低位字節存放在內存的高地址端9Yc28資訊網——每日最新資訊28at.com

本文這里以32位的數0x12345678,來舉個例子9Yc28資訊網——每日最新資訊28at.com

圖片圖片9Yc28資訊網——每日最新資訊28at.com

在現代計算機中,大多采用小端字節序,比如x86、DEC VAX、PDP-11等等 當然也有采用大端字節序的,比如:IBM、Sun、PowerPC等處理器 另外ARM系列處理器,大小端字節序都支持,可配置9Yc28資訊網——每日最新資訊28at.com

判斷當前設備大端or小端?

可以寫個小代碼來快速判斷,我們這里以C/C++語言為例:9Yc28資訊網——每日最新資訊28at.com

BOOL IsBigEndian(){    union NUM    {        int a;        char b;    }num;    num.a = 0x1234;    if( num.b == 0x12 )    {        return TRUE;    }    return FALSE;}

這里利用聯合體union,所有成員共用同一塊內存的特性,可以輕松地判斷當前設備是否是大小端字節序9Yc28資訊網——每日最新資訊28at.com

尾語

最后補充一個小故事,大端小端名詞來源于Jonathan Swift書寫的《格列佛游記》,書中描述了小人國,因為吃雞蛋是從大頭的一端剝開還是從小頭的一端這個問題,導致教派之間的沖突,連年征戰,死戰不休9Yc28資訊網——每日最新資訊28at.com

這是不是也暗示大端小端爭論,并無較真的意義,怎么好用怎么來,通信交流做好轉換的必要措施即可9Yc28資訊網——每日最新資訊28at.com

到如今,從技術上來說,大小端的并無誰有明顯的優勢,更多的是計算機發展歷史的影響。最初設計時,對字節序的選擇往往是任意的,但后續技術的發展,需要背上兼容性的包裹。比如ARM明明大小端都支持,為啥大部分是小端,主要是移植x86程序方便;9Yc28資訊網——每日最新資訊28at.com

還有RISC-V手冊描述他們選擇了小端序的原因:因為小端字節序,目前在商業上占主導地位(所有x86系統、iOS、Android和Windows for ARM)。想拓寬視野地可以去看看The RISC-V Instruction Set Manual Volume I: Base User-Level ISA9Yc28資訊網——每日最新資訊28at.com

當然也有商業競爭的原因,Intel的x86選擇小端(可能是為了躲避專利糾紛),最終擊敗了IBM,導致如今主機領域小端是主流9Yc28資訊網——每日最新資訊28at.com

參考資料:

《深入理解計算機系統》9Yc28資訊網——每日最新資訊28at.com

https://inst.eecs.berkeley.edu/~cs250/fa11/handouts/riscv-spec.pdf9Yc28資訊網——每日最新資訊28at.com

https://www.spiceworks.com/tech/tech-general/articles/big-endian-vs-little-endian9Yc28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-80815-0.html你了解計算機中大端小端之分嗎?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 一文揭秘向量化編程的高性能魔法世界

下一篇: 探索類中的成員對象與封閉類

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 岫岩| 乌恰县| 体育| 瓦房店市| 太原市| 钟山县| 湖北省| 凌源市| 中西区| 乐陵市| 时尚| 龙口市| 高清| 大城县| 雷波县| 新野县| 太保市| 集贤县| 六枝特区| 法库县| 余江县| 夹江县| 施甸县| 道孚县| 都匀市| 邢台市| 叶城县| 广东省| 安乡县| 黄梅县| 宁蒗| 酒泉市| 洪江市| 龙泉市| 团风县| 乌鲁木齐县| 和田县| 东明县| 武强县| 和龙市| 乐亭县|