計算機組成原理--數據格式與機器碼


數據格式

計算機中使用的數據可分成兩大類:

  • 符號數據:非數字符號的表示(ASCII、漢字、圖形等)
  • 數值數據:數字數據的表示方式(定點、浮點)

計算機數字和字符的表示方法應有利於數據的存儲、加工(處理)、傳送;

編碼:用少量、簡單的基本符號,選擇合適的規則表示盡量多的信息,同時利於信息處理(速度、方便)

進制轉換

這個一般都不是問題,但二進制小數轉十進制我忘了,所以在這復習一下

例如將0.11101轉為十進制那么應該這樣做:0*2^(0)+ 1*2^(-1)+1*2^(-2)+1*2^(-3)+ 0*2^(-4)+1*2^(-5)

計算機在數據、文字的表示方式時,應該考慮一下幾個因素:

  • 表示的數據類型(符號、小數點、數值)
  • 數值的范圍
  • 數值精度
  • 存儲、處理、傳送的硬件代價
  • 是否有利於軟件的移植等...

定點表示

所有數據的小數點位置固定不變,理論上位置可以任意,但實際上將數據表示有兩種方法(小數點位置固定-定點表示法/定點格式):純小數和純整數,然后又分帶符號不帶符號

定點純小數

定點純整數

定點表示法的特點:

  • 定點數表示數的范圍受字長限制,表示數的范圍有限;
  • 定點表示的精度有限
  • 機器中,常用定點純整數表示;

因為要表示實數(包括小數和整數),所以引入浮點數

浮點表示:小數點位置隨階碼不同而浮動

機器中表示

IEEE754標准(規定了浮點數的表示格式,運算規則等)規則規定了單精度(32)和雙精度(64)的基本格式,規則中,尾數用原碼,指數用移碼(便於對階和比較)

IEEE754標准

  • 基數R=2,基數固定,采用隱含方式來表示它。
  • 32位的浮點數:
    • S數的符號位,1位,在最高位,“0”表示正數,“1”表示負數。
    • M是尾數, 23位,在低位部分,采用純小數表示
    • E是階碼,8位,采用移碼表示。移碼比較大小方便。
    • 規格化: 若不對浮點數的表示作出明確規定,同一個浮點數的表示就不是惟一的。
      • 尾數域最左位(最高有效位)總是1故這一位經常不予存儲,而認為隱藏在小數點的左邊
      • 采用這種方式時,將浮點數的指數真值e變成階碼E時,應將指數e加上一個固定的偏移值127(01111111),即E=e+127

E: 階碼位數,決定數據的范圍,M: 尾數位數,決定數的精度

  • 真值x為零表示:當階碼E為全0且尾數M也為全0時的值,結合符號位S為0或1,有正零和負零之分
  • 真值x為無窮大表示:當階碼E為全1且尾數M為全0時,結合符號位S為0或1,也有+∞和-∞之分。
  • 這樣在32位浮點數表示中,要除去E用全0和全1(255)表示零和無窮大的特殊情況,指數的偏移值不選128(10000000),而選127(01111111)。對於規格化浮點數,E的范圍變為1到254,真正的指數值e則為-126到+127。因此32位浮點數表示的絕對值的范圍是10-38~1038(以10的冪表示)。
  • 浮點數所表示的范圍遠比定點數大。一台計算機中究竟采用定點表示還是浮點表示,要根據計算機的使用條件來確定。一般在高檔微機以上的計算機中同時采用定點、浮點表示,由使用者進行選擇。而單片機中多采用定點表示

指數采用偏移值,其中單精度偏移值為127,雙精度為1023,將浮點數的階碼值變成非負整數,便於浮點數的比較和排序

機器數的特點

原碼:表示簡單,運算復雜:符號位不參加運算,要設置加法、減法器,0的表示不唯一,不能直接判定是執行加法還是減法運算,分同號和異號

反碼:表示相對原碼復雜,運算相對原碼簡單:符號位參加運算, 只需要設置加法器,但符號位的進位位需要加到最低位,0的表示不唯一

補碼:表示相對原碼復雜,運算簡單:只需設置加法器,0的表示唯一

移碼(增碼):

BCD碼

表示一位十進制數的二進制碼的每一位有確定的權。一般用8421碼,其4個二進制碼的權從高到低分別為8、4、2和1。用0000,0001,…,1001分別表示0,1,…,9,每個數位內部滿足二進制規則,而數位之間滿足十進制規則,故稱這種編碼為“以二進制編碼的十進制(binary coded decimal,簡稱BCD)碼”

在計算機內部實現BCD碼算術運算,要對運算結果進行修正,對加法運算的修正規則是:
如果兩個一位BCD碼相加之和小於或等於(1001),即(9),不需要修正;如相加之和大於或等於(10),要進行加6修正,並向高位進位,進位可以在首次相加(例3.10③)或修正時產生

碼值轉換

補碼是在“模”和“同余”的概念下導出的。

“模”是指一個計量系統的計量范圍,即產生“溢出”的量。

5-2=5+10     (MOD  12)
   5+(-2)=5+10  (MOD 12)
   -2=10         (MOD 12)

可以說:在模為12的情況下,-2的補碼 就是10。 一個負數用其補碼代替,同樣可以得到正確的運算結果。

1、一個負數可用它的正補數來代替,而這個正數可以用模加上負數本身求得。

2、一個正數和一個負數互為補數時,它們絕對值之和即為模數。

進一步結論:

  • 在計算機中,機器能表示的數據位數是一定的,其運算都是有模運算。如果是n位整數(不含符號位),其模為2n+1。如果是n位小數,其模為2。
  • 若運算結果超出了計算機所能表示的數值范圍,則只保留它的小於模的低n位的數值,超過n位的高位部分就自動舍棄了。

補碼性質:高位表明正負,正數補碼,尾數與原碼相同,范圍-2n~2n-1(定點整數)

由原碼求補碼的簡便原則:除符號位以外,其余各位按位取反,從最低位開始遇到的第一個1及右邊的各位保持不變

由[X]補求[-X]補:連符號位一起各位求反,末位加1。

由[X]補求[X/2]補:將[X]補的符號位和數值位一起向右移動一次.符號位移走后保持原來的值不變.這稱為“算術移位”,[X/4]補和[X/8]補同理

n+1位補碼所能表示的數

反碼表示法

定義:正數的表示與原、補碼相同,負數的反碼符號位為1,數值位是將原碼的數值按位取反,就得到該數的反碼表示,電路容易實現,觸發器的輸出有正負之分

[x ]補=[x ]反+2^-n,反碼表示有正0和負0之分

移碼

特點:移碼和補碼尾數相同,符號位相反,范圍:-2n~2n-1

性質: 若[X1]移>[X2]移,則有 X1>X2.

原碼、補碼、反碼和移碼的區別,可分三個區域:





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM