1. 程式人生 > >計算機組成原理複習2(資料的表示和運算)

計算機組成原理複習2(資料的表示和運算)

數制與編碼

1.進位計數法

基數是每個數位所用到的不同數碼的個數

2.不同進位制數之間的相互轉換

  • 2進轉換8進位制:湊足3位,高位補0
  • 2進位制轉換16進位制:湊足4位,高位補0
  • n任意轉化為十進位制:各個位上的數乘以n的(位數-1)次冪
  • 除基取餘法+乘積取整法

3.校驗碼

校驗碼是指能夠發現或能夠自動糾正錯誤的資料編碼,也稱為檢錯糾錯編碼;

原理:通過增加一些冗餘碼,來檢驗糾錯編碼

奇偶校驗碼:若干位有效資訊,再加上一個二進位制位組成校驗碼(0/1);判斷整個校驗碼(有效資訊位和校驗位)中1的個數奇與偶

海明校驗碼:可以糾錯,L最小碼距越大檢測錯誤的位數D越大,糾正錯誤的位數C也越大;L-1=D+C (且D>=C)

           n+k<=2^k  -1(n為有效資訊的位數,k為校驗碼位數)

迴圈冗餘校驗碼(CRC):基本思想是在K位資訊碼後再拼接R位的校驗碼,整個編碼的長度為N位;

定點數的表示與運算

1.機器數的定點表示

   定點小數:純小數,約定小數點位置在符號位之後,有效數值部分最高值之前

定點整數:純整數,約定小數點位置在有效數值部分最低位之後

2.原碼,補碼,反碼,移碼(正數:反碼=原碼=補碼)

原碼:最高位為符號位 ;負小數1+|X|

原碼加減法-先比較絕對值大小,絕對值大的減小的

補碼:

     純小數x:x在0~-1期間 x=2-|x|

     純整數x:字長n   2^n - | x |

原碼求補碼(負數):符號不變,數值部分按位取反,末位加一

補碼x算術移位:將符號位與數值位一起右移一位並保持原符號位的值不變

反碼:原碼按位取反(負數)

移碼:

      常用來表示浮點數的階碼,只能表示整數

      移碼就是在真值X上加一個常數(2^n偏移值)

 3.定點數的移位運算

根據操作物件的不同,分為算術移位(有符號)和邏輯移位

算術移位:帶符號,符號位不變

       原碼左移一位若不溢位,相當於乘以2 ;右移一位相當於除以2

      

邏輯移位:邏輯左移,高位移丟,地位添0,邏輯右移,低位移丟,高位添0

4.定點數的除法運算

    原碼除法運算:主要採用原碼不恢復餘數法(原碼交替除法)

     補碼除法運算:特點是符號位與數值位一起參加運算,商符自然形成;第一步根據被除數和除數的符號決定是加法還是減法(同號相減,異號相加);上商原則根據餘數和除數的符號位共同決定,同號上1 異號上0,最後一步商恆置1;

   【X】補求【-X】補:【X】補連同符號位一起變反,末尾加一  

浮點數的表示與運算

在位數有限的情況下,既擴大了數的表示範圍,有保持了數的有效精度

1.浮點數的表示格式

              N=r^E*M(r是浮點數階碼的底,與尾數的基數相同,通常r=2,E和M都是帶符號的定點數,E稱為階碼,M稱為尾數)

                                  | 階符J |  階碼的數值部分 |  數符 | 尾數的數值部分 |

階碼是整數,階符和階碼的位數m合起來反映浮點數的表示範圍及小數點的實際位置,尾數的位數n反映浮點數的精度

2.規格化浮點數

  •      規格化操作是調整一個非規格化浮點數的尾數和階碼的大小
  • 左規:算術左移,階碼加1
  • 右規:尾數算術右移一位,階碼加1(一次就好)
  • 原碼規格化數的尾數最高一定是1,補碼規格化數的尾數最高位一定與尾數符號位相反。基數不同,規格化形式不同

3.IEEE 754 標準 

                                              

浮點數格式:

                            

規格化的短浮點數真值:(-1)^s * 1.M* 2^(E-127)     E取值1~254

規格化的長浮點數真值:(-1)^s * 1.M* 2^(E-1023)   E取值1~2046

s=0表示正數,s=1時表示負數

4.定點,浮點表示的區別

(字長相同)

  • 數值表示範圍浮點範圍大
  • 數的精度浮點降低了
  • 數的運算:浮點複雜,需要運算階碼和尾數
  • 溢位:頂點中超出數的範圍發生溢位,浮點中規格化後階碼超出範圍發生溢位

5.浮點數的加減法(採用補碼)

    1.對階:  使兩個運算元的小數點位置對齊(階碼相等);求階差,小階向大階看齊,小階右移一位

    2.尾數求和:將對階後的尾數按定點數運算

    3.規格化:

尾數大於0,補碼規格化:  00.1xxx...x

尾數小於0,補碼規格化:  11.0xxx...x

左規:當尾數出現00.0xxx或11.1xxx時需要左規,尾數左移,階數-1,直到00.1xxx或11.0xxx

右規:當尾數求和溢位時(10.xxxx/01.xxxx)

    4.含入;

0/1 舍入法:右移時移去的最高數值位為0,捨去,為1,尾數末位加1

恆置1法:恆加1

   5.溢位判斷:由階碼的符號決定

基數越大範圍越大,精度低

原碼錶示時:正數規格化:0.1xxxx,負數規格化:1.1xxxx

G=AB

P=A異或B

C=G+PC'