2.2.4 数据的的存储和排列
生活随笔
收集整理的這篇文章主要介紹了
2.2.4 数据的的存储和排列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄:
- 1.數據的“大端模式”和“小端模式”存儲
- 為什么會有大小端模式之分呢?
- 2.數據按“邊界對齊”方式存儲
1.數據的“大端模式”和“小端模式”存儲
- 注意:在計算機系統中,我們是以字節為單位的,每個地址單元都對應著一個字節,一個字節為 8bit。
- 大端模式:指數據的高字節保存在內存的低地址中,而數據的低字節保存在內存的高地址中,這樣的存儲模式有點兒類似于把數據當作字符串順序處理:地址由小向大增加,而數據從高位往低位放;這和我們的閱讀習慣一致。
- 小端模式:指數據的高字節保存在內存的高地址中,而數據的低字節保存在內存的低地址中,這種存儲模式將地址的高低和數據位權有效地結合起來,高地址部分權值高,低地址部分權值低。
為什么會有大小端模式之分呢?
- 這是因為在計算機系統中,我們是以字節為單位的,每個地址單元都對應著一個字節,一個字節為 8bit。
- 在C語言中除了8bit的char之外,還有16bit的short型,32bit的long型(要看具體的編譯器),另外,對于位數大于 8位的處理器,例如16位或者32位的處理器,由于寄存器寬度大于一個字節,那么必然存在著一個如何將多個字節安排的問題。 因此就導致了大端存儲模式和小端存儲模式。
- 例如一個16bit的short型x,在內存中的地址為0x0010,x的值為0x1122,那么0x11為高字節,0x22為低字節。
- 對于 大端模式,就將0x11放在低地址中,即0x0010中,0x22放在高地址中,即0x0011中。
- 小端模式,剛好相反。我們常用的X86結構是小端模式,而KEIL C51則為大端模式。很多的ARM,DSP都為小端模式。有些ARM處理器還可以隨時在程序中(在ARM Cortex 系列使用REV、REV16、REVSH指令 )進行大小端的切換。
- DSP:(digital signal processor)是一種獨特的微處理器,是以數字信號來處理大量信息的器件
- RISC:精簡指令集計算機(RISC:Reduced Instruction Set Computing RISC)是一種執行較少類型計算機指令的微處理器,起源于80年代的MIPS主機(即RISC機),RISC機中采用的微處理器統稱RISC處理器。
- ARM:處理器是英國Acorn有限公司設計的低功耗成本的第一款RISC微處理器。全稱為Advanced RISC Machine。ARM處理器本身是32位設計,但也配備16位指令集,一般來講比等價32位代碼節省達35%,卻能保留32位系統的所有優勢。
- CISC:復雜指令集計算機,包括一個豐富的微指令集,這些微指令簡化了在處理器上運行的程序的創建。指令由匯編語言所組成,把一些原來由軟件實現的常用的功能改用硬件的指令系統實現,編程者的工作因而減少許多,在每個指令期同時處理一些低階的操作或運算,以提高計算機的執行速度,這種系統就被稱為復雜指令系統。
2.數據按“邊界對齊”方式存儲
- 假設存儲字長32位,可按字節、半字和字尋址。
- 對于32位計算機,數據以邊界對齊方式存儲,半字地址一定是2的整數倍,字地址一定是4的整數倍,這樣無論所取的數據是字節、半字還是字。均可一次訪存取出。
- 位、字節、字是計算機數據存儲的單位。位是最小的存儲單位,每一個位存儲一個1位的二進制碼,一個字節由8位組成。而字通常為16、32或64個位組成。一個存儲字可以是多個字節組成。
- 所存儲的數據不滿足上訴要求時,通過填充空白字節使其符合要求。這樣雖然浪費了一些存儲空間,但是卻提高了取指令和取數據的速度。
- 不按邊界對齊方式存儲的缺點:半字長或字長的指令可能會存儲在兩個存儲字中,此時需要兩次訪存,并且對高低字節的位置進行調整、連接后才能得到想要的完整指令或數據,從而影響了指令的執行效率和速度。
總結
以上是生活随笔為你收集整理的2.2.4 数据的的存储和排列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.2.3 C语言中的整数类型及类型转换
- 下一篇: 《剑指offer》——03. 数组中重复