補碼加法
補碼加法運算基本公式
定點整數: [x+y]補=[x]補+[y]補(結果 mod 2n+1)
定點小數: [x+y]補=[x]補+[y]補(結果 mod 2)
例1: x=+1001,y=+0101,求x+y
∵ [x]補=0 1001,[y]補=0 0101
∴x+y=+1110
例2: x=+1011,y=−0101,求x+y
∵[x]補=0 1011,[y]補=1 1011
結果對2n+1取模
∴x+y=+0110
計算機中加法是同過補碼進行的, 這是爲了在同一個運算器上另一種運算——減法. 兩個數的補碼相加等於兩個分別求補碼再相加, 最終結果對2n+1取模.
補碼減法
補碼減法基本運算公式
定點整數: [x−y]補=[x]補−[y]補=[x]補+[−y]補
定點小數同上.
運算過程的重點是把−[y]補⇒[−y]補
轉換規則: 符號位和數值位均取反, 最後加1.
爲什麼符號位取反? 因爲這個過程是把一個負數轉換成一個正數, 所以符號位需要變.
爲什麼數值位取反? 取反後加1這個過程是對補碼又求了一次補碼, 最終數值位變成了原碼, 又因爲符號位取反, 所以這個數從負數變成了正數, 因此在這裏又可以得出: 多次求補碼, 可以使 原碼⇌互轉補碼.
例: 一個負數[−001]⇒[1001]原⇒[1111]補⟹再求補碼[10001]補 , 此時的補碼變成了原碼.
溢出概念及其檢測方法
當所存儲的數超過二進制(固定長度)所能表示的值的範圍時, 二進制所表示的數值出現錯誤, 這種現象稱爲溢出. 溢出並非都是壞處, 在將減法轉換成加法(由補碼完成)就利用了溢出的特性.
溢出分兩種正溢出和負溢出, 當兩個正數相加超出進製表示範圍稱爲正溢出, 兩個負數進行運算超出進製表示範圍稱爲負溢出.
溢出只出現在良正數或負數相加.
溢出檢測方法有兩種: 變形補碼判別法和單符號位法
變形補碼採用雙符號位表示補碼, 任何正數的符號位都是"00", 任何負數的符號位都是"11", 運算後, 如果符號位變成"01"(正溢)或"10"(負溢)表示出現溢出.
符號位 |
結果 |
00 |
正數 |
01 |
溢出 |
10 |
溢出 |
11 |
負數 |
在電路中使用異或判斷很方便.
單符號位法判斷時採用1bit進位與符號位進行判斷, 判斷方式通上.
Q&A 請指正!