數據與文字的表示方法

數據與文字的表示方法

計算機中使用數據可分爲兩大類:markdown

  • 符號數據(ASCII,漢字,圖形等等)
  • 數值數據

那麼,它們在計算機中是怎麼存儲的呢?這就是咱們學習的目標學習

數值數據表示方法

數值數據經常使用的數據表示格式又有兩種:編碼

  • 定點格式(數據範圍有限,要求的處理硬件簡單)
    • 純小數
    • 純整數
  • 浮點格式(數據範圍很大,要求的處理硬件複雜)

定點純小數

第一個是符號位,緊跟着就是小數點(在定點純小數中,小數點固定在符號位以後,不佔位置),後面的就是數值圖片

這裏寫圖片描述

範圍:字符串

這裏寫圖片描述

例子:1111表示-0.875get


定點純整數

第一個是符號位,後面的就是數值,小數點在數值的最後一位+1(小數點不佔位置)it

這裏寫圖片描述

例子:1111表示的是-7io

計算機中經常使用定點純整數表示,若是數據超出了範圍,會溢出的class

這裏寫圖片描述


浮點數的表示方法

爲何要有浮點數表示的方法呢?緣由就是定點數表示方法的範圍不夠大。例以下面的數據,在定點計算機中是沒法直接表示出來的軟件

要讓它可以送入定點計算機進行某種運算,就必須抽取它們的比例因子(數值部分絕對值小於1)

那麼在計算機中就是這樣表示一個數字了:把數的有效數字和數的範圍在計算機中的一個存儲單元中分別表示,數的小數點位置隨比例因子的不一樣而在必定的範圍內能夠自由浮動。這就叫作浮點表示法

這裏寫圖片描述


任何的一個數N能夠寫成這樣:

這裏寫圖片描述

咱們在計算機上表示浮點數是這樣的:

這裏寫圖片描述


然而,階符,階碼,數符,尾數存儲的位數是不肯定的,對於不一樣的系統可能存儲數據的方式就不同

因而爲了便於軟件的移植,咱們按照IEEE754的標準來存儲浮點數數據

這裏寫圖片描述

這裏寫圖片描述

術語解釋:

  • S是符號位,0表示正數,1表示負數
  • E是階碼(也就是指數),它用移碼來表示(移碼容易比較大小),若是是32位的浮點數,就佔8位,若是是64位的浮點數,就佔11位
    • 將浮點數的e轉成在計算機保存浮點數的E,應該在指數e加上一個固定的偏移值127(E=e+127)【這是32位浮點數】,64位浮點數是加上1023的偏移值
  • M是尾數,若是是32位的浮點數,就佔23位,若是是64位的浮點數,就佔52位

這裏寫圖片描述

咱們對浮點數的表示也作出了明確的規定:當尾數的值不爲0時,尾數域的最高有效位爲1

這裏寫圖片描述

例子1:若浮點數x的754標準存儲格式爲(41360000)16,求其浮點數的十進制數值。

步驟:

  • 先把保存在計算機的數據轉換成二進制
    • 0 1000 0010 011 0110 0000 0000 0000 0000
  • 計算出指數e,e=E-127
    • 二進制的1000 0010就是E,e=10000010-01111111=00000011=3
  • S=0,e=3,M=0110110,再套公式,最後答案爲:

這裏寫圖片描述

例子2:將數(20.59375)10轉換成754標準的32位浮點數的二進制存儲格式。

步驟:

  • 先把十進制轉換成二進制
    • 20.59375= 10100.10011
  • 移動小數點,使其在1和2位之間
    • 1.010010011*2的4次方
  • e=4,E=4+127, S=0,M=010010011
  • 最後獲得32位浮點數的二進制存儲格式爲:
    • 01000001101001001100000000000000

十進制數串的表示方法

大多較強的計算機都能直接處理十進制形式表示的數據,通常有兩種形式:

  • 字符串形式【一個字節存放一個十進制數位,爲了指明這個數,須要給出起始地址和位數(串的長度)】
  • 壓縮的十進制數串形式【一個字節存放兩個十進制數位】

原碼,反碼,補碼,移碼

有個知乎回答得很好:

https://www.zhihu.com/question/20159860/answer/71256667

計算機實際使用中用來運算和存儲的都是補碼

移碼主要用於表示浮點數的階碼E,有利於比較兩個指數的大小和對階操做!

特色:移碼和補碼尾數相同,符號位相反


字符和字符串的表示方法

字符數據屬於符號數據,國際上採用的字符系統是七單位的ASCII碼

直接使用西文標準鍵盤輸入漢字,進行處理,並顯示打印漢字須要解決三種不一樣用途的編碼

  • 輸入編碼
  • 漢字內碼
  • 漢字字模碼
相關文章
相關標籤/搜索