信息的表示和處理(二)——運算電路基礎


這部分內容比較簡單,就是有幾個符號不太好理解,與後續的控制指令關係密切,需要充分理解,最近狀態不太好,希望慢慢調整回來,come back

數字邏輯電路基礎

邏輯電路基礎

基於0和1構造所有運算電路
⭐布爾代數:0/1代表邏輯值假/真

  • 將命題邏輯問題化爲代數問題
  • 最基本的表示:與或非,真值表
    ⭐一位邏輯門電路
    在這裏插入圖片描述
    ⭐n位邏輯門電路(按位運算)
    在這裏插入圖片描述
    ⭐組合邏輯部件:
  • 組合邏輯電路/時序邏輯電路
  • 功能部件
    畫出真值表→寫出邏輯函數→確定電路組成
    ⭐多路選擇器:一個輸出端F,控制端S,兩個輸入端A/B
    在這裏插入圖片描述

無符號數加法器

一位加法器(全加器)

兩個加數A/B,一個進位Cin,向高位進位cout,輸出本位F
{cout,F}=A+B+cin;//這種表示按照verilog語法
當A/B/cin中有奇數個1時,F爲1,當有兩個以上1時,cout爲1
在這裏插入圖片描述
在這裏插入圖片描述
fully add(FA)

n位加法器

  • n位無符號數加(無法判斷溢出吧啦吧啦,就是簡單的相加)

在這裏插入圖片描述
由n個全加器組成
所有的算術運算都基於全加器

  • n位帶標誌加法器
    想辦法實現減法運算(判斷溢出,取補碼等等)
    利用標誌信息表示比較運算等等其他運算
    [-y]補=~[y]補+1
    在這裏插入圖片描述
    在此基礎上加入寄存器,移位器,控制邏輯,就能實現ALU,乘除運算和浮點運算

ALU(只含整數加減運算和邏輯運算)

無符號整數加減,帶符號整數加減,與或非等邏輯運算
核心爲帶標誌加法器
輸出有結果和標誌信息,有操作控制端決定執行功能。

c表達式和邏輯電路

  • c語言到邏輯電路的轉換

高級語言→彙編語言:通過運算指令實現(媒介)
彙編語言→運算電路:對指令譯碼,根據指令譯碼結果控制電路實現。

  • c語言中的各類運算
    1 算術運算
    2 按位運算,由x的類型確定是邏輯移位還是算術移位
    判斷溢出
    邏輯移位:高位移出爲1,說明溢出
    算數移位:新的符號位與原符號位不同
    3 邏輯運算:區分與按位運算的符號區別
    4 截斷和擴展

整數加減運算

加減標誌信息

需要解決的問題:利用符號位實現整數的比較大小
加/減運算部件不考慮運算的信息是帶符號還是無符號,結果是否正確,就是簡單的機械運算。
標誌位會在標誌寄存器中存儲,用於轉移指令和控制指令等等。
ZF:零標誌,判斷位串是否全0,全0則ZF值爲1
OF:判斷是否溢出,若A/B’(已經進行補碼處理)同號但與sum不同號,則溢出
解釋:假設爲4位帶符號運算
全正:溢出後符號位必爲1
全負:溢出後符號位必爲0
若一正一負:不可能溢出(範圍不允許)
SF:sum符號
CF:進位/借位符號(這真的是困擾了我很久)xor cout sub
解釋:加法計算時:爲0是說明沒有進位
減法運算時:爲1時說明產生借位,同號可以比較,異號不能直接通過CF判斷大小

加減法溢出公式及舉例

判斷是否溢出:
帶符號溢出判斷:OF=1
無符號減溢出:CF=1(有借位),通過CF判斷大小

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章