1. 程式人生 > >第三章 計算機中的運算

第三章 計算機中的運算

考綱要求:計算機中的基本運算,包括邏輯及移位運算;定點數的加(減)、乘、除法運算;浮點數的加(減)、乘、除法運算;運算器的設計,包括算術邏輯單元ALU、串/並行加法器、浮點運算器等。

計算機中的基本運算

邏輯運算

清除運算

置一運算

邏輯與運算

邏輯或運算

異或運算

移位運算

邏輯移位運算

邏輯移位規則:邏輯左移時,高位移丟,低位補0;邏輯右移時,低位移丟,高位添0。

算術移位運算

碼值 添補程式碼 產生影響
正數 原碼、補碼、反碼 0

左移時最高數位丟1,結果出錯

右移時最低數位丟1,影響精度

負數 原碼 0 左移時最高數位丟1,結果出錯右移時最低數位丟1,影響精度
補碼 左移添0

左移時最高數位丟0,結果出錯

右移添1 右移時最低數位丟1,影響精度
反碼 1

左移時最高數位丟0,結果出錯

右移時最低數位丟0,影響精度

定點數運算

加法運算

二進位制原碼加(減)法

二進位制補碼加(減)法

  • 參與運算的運算元用補碼錶示
  • 採用兩位符號位,即採用變形補碼錶示
  • 符號位作為數的一部分參與運算
  • 運算結果以補碼錶示,若兩符號位相同,結果正常;若符號位為01,表示正溢位;若符號位為10,表示負溢位

二進位制移碼加(減)法

  • 參與運算的運算元用移碼錶示
  • 採用兩位符號位,即用變形移碼錶示
  • 符號位作為數的一部分一起參與運算
  • 運算結果以移碼錶示,若第一位符號為0,結果正常;若第一位符號為,表示溢位:符號位為10表示正溢位,符號位為11表示負溢位

乘法運算

原碼一位乘法

補碼一位乘法(Booth乘法)

  1. 被乘數和部分積取兩位符號位,乘數取一位符號位,並參與運算
  2. 乘數末尾增設附加位B_{n+1},其初始值為0
  3. B_{n}B_{n+1}構成各步運算的乘數判斷位,按照下表所示方法進行操作
  4. 按照補碼移位規則,部分積右移時末端觸發器補入第一位符號位
  5. 進行到第n+1步,但第n+1步的部分積不再移位
y_{i}y_{i+1} y_{i+1}-y_{i} 操作
00 0 部分積右移一位
01 1 部分積加[x]_{補}補,再右移一位
10 -1 部分積加[-x]_{補}補,再右移一位
11 0 部分積右移一位

除法運算

原碼一位加減交替法:

  1. 商的符號位單獨處理,C_{0}=A_{0}\oplus B_{0}.
  2. 取絕對值(原碼尾數)相除,為不使商溢位,要求被除數絕對值小於除數絕對值,即|A|< |B|,除法第一步做減法
  3. 由於加減法操作是由余數的符號位控制,且要等餘數左移一位後再進行操作,這時餘數的符號位可能被破壞,因此運算中被除數和除數和餘數應設兩位符號位
  4. 當餘數R為正,商 

補碼一位比較除法

浮點數的運算

浮點加減運算

浮點乘法運算

浮點乘法是將兩個規格化的浮點數相乘。規格化浮點乘法運算可分為四步:判零並置結果數符,階碼相加,尾數相乘,規格化、判溢位與舍入

浮點除法運算

判零並置商符,尾數調整,階碼相減,尾數相除

運算器的設計

算術邏輯單元ALU

串/並行加法器

浮點運算器