教材基於《計算機組成原理 第3版》 ——唐朔飛
無符號數和有符號數
無符號數
無符號數:整個機器字長的全部二進位制位均為數值位,沒有符號位,相當於數的絕對值。
暫存器的位數用來反映無符號數的範圍。
有符號數
原碼
? 原碼的定義:
-
整數
-
小數
? 舉例:
反碼
? 反碼的定義:
-
整數
-
小數
補碼
? 補碼的定義
-
整數
-
小數
? 當真值為 負 時,原碼 可用 補碼除符號位外 每位取反,末位加 1 求得
⚠️ 求補碼的另一種方法:從原碼的最右端開始向左數,數到第一個 1 停止,該位置左邊的所以位數(除了符號位)取反。
1️⃣ 一個負數加上 “模” 即得該負數的補數
2️⃣ 一個正數和一個負數互為補數時,它們絕對值之和即為模數
? 舉例:
移碼
? 移碼的定義
? 最小真值的移碼為全 0
練習
三種機器數的小結
1️⃣ 最高位為符號位,書寫上用“,”(整數)或“.”(小數)將數值部分和符號位隔開
2️⃣ 對於正數,原碼 = 補碼 = 反碼
3️⃣ 對於負數 ,符號位為 1,其數值部分
- 原碼除符號位外每位取反末位加 1 -> 補碼。
- 原碼除符號位外每位取反 -> 反碼
- 原碼和反碼的真值 0 有兩種表示
- 補碼和移碼的真值 0 只有一種表示
- 補碼和移碼可以多表示一個負數
數的定點表示和浮點表示
定點表示
浮點表示
浮點數的表示形式
浮點數的表示範圍
IEEE 754 標準
定點運算
移位運算
? 算術移位規則
? 算術移位和邏輯移位的區別
加減法運算
補碼加減運算公式
-
加法
-
減法
-
連同符號位一起相加,符號位產生的進位自然丟掉
-
溢位判斷
-
一位符號位判溢位:參加操作的 兩個數(減法時即為被減數和“求補”以後的減數)符號相同,其結果的符號與原運算元的符號不同,即為溢位
-
兩位符號位判溢位:結果的雙符號位 相同:未溢位;結果的雙符號位 不同:溢位。最高符號位 代表其 真正的符號
-
乘法運算
原碼乘法
- 原碼一位乘運算規則
補碼乘法
-
補碼一位乘運算規則
-
Booth 演算法(被乘數、乘數符號任意)
除法運算
原碼除法
-
恢復餘數法
-
不恢復餘數法(加減交替法)
補碼除法
- 餘數補碼與除數補碼同號:上商“1”;不同號:上商“0”
- 末位商恆置“1”