文章目錄
計算機組成原理(第二章)
第二章思維導圖如下:
0. 數據類型
- 按數制分:二值進制、十進制、八進制、十六進制。
- 按數據格式分: 真值、機器數。
- 按數據的表示範圍分:定點數、浮點數。
- 按能否標識負數分:無符號數、有符號數。
1. 數據與文字的表示方法
1.1 數據格式
定點數
- 定點數:小數點固定在某一位置的數據。
- 純小數:
- 表示形式: 爲符號位 ;爲0。
有符號數:
無符號數:
- 表示形式: 爲符號位 ;爲0。
- 純整數:
- 表示形式: 爲符號位 ;爲數值位。
有符號數:$x=x_sx_{n-1}……x_{1}x_{0} $
無符號數:
- 表示形式: 爲符號位 ;爲數值位。
- 純小數:
- 定點機的特點:
- 所能表示的數據範圍小;
- 數據精度較低;
- 存儲單元利用率低。
浮點數
-
浮點數:小數點位置可變,形如科學計數法中的數據表示。
-
格式定義:
- M:尾數,是一個純小數,表示數據的全部有效數位,其位數決定數值的精度;
- R:基數,可以取2、8、10、16,表示當前的數制;
- e:階碼,是一個整數,用於指出小數點在該書中的位置,其位數決定數據的取值範圍;
-
機器數的一般表示形式:
階符 階碼 數符 尾數 數符 階符 階碼 尾數 -
規格化表示:
- 要求:|尾數| 0.5,( 是否爲規格化浮點數與階碼無關 );
- 尾數原碼錶示:最高數值位爲1;
- 尾數補碼錶示:最高數值位與符號位相反;
- 處理:
- 左規處理(數值向左移動);
- 右規處理(數值向右移動);
- 要求:|尾數| 0.5,( 是否爲規格化浮點數與階碼無關 );
-
最值:
-
32位浮點數的IEEE754標準表示:
| 數符S | 階碼E | 尾數M |- 數符S:1位,表示浮點數的符號;
- 尾數M:23位,原碼純小數表示,小數點在尾數域的最前面;
- 階碼E:8位,採用有偏移值的移碼錶示(移127碼);
- 真值:
-
S E M 正零 0 0000 0000 000……000 負零 1 0000 0000 000……000 正無窮 0 1111 1111 000……000 負無窮 1 1111 1111 000……000
1.2 數的機器碼錶示
原碼
- 定義:
- 定點小數:
- 定點整數:
- 定點小數:
- 特點:
- 0的有兩種表示法;
- 數據表示範圍:
- 定點小數:
- 定點整數:
- 符號位與數值位不能一起參與運算
補碼
-
定義:
- 定點小數:
- 定點整數:
- 定點小數:
-
特點:
- 0的編碼唯一:0000
- 數據表示範圍:
- 定點小數:
- 定點整數:
- 只要結果不溢出,符號位可與數值位一起參與運算
-
有原碼求補碼
- 除符號位以外,其餘各位按位取反,末位加一;
- 除符號位以外,從最低位開始,遇到的第一個1以前各位保持不變,之後各位取反。
-
求相反數的補碼:由求 (連同符號位的所有位一起取反,末位加一)。
移碼
- 定義:
- 特點:
- 0的表示方法唯一:1000;
- 與補碼符號位相反,數值位相同;
- 最高位爲0表示負數,爲1表示整數;
- 可以較爲直觀的判斷兩個數據的大小(全爲0時所對應真值最小,全爲1時所對應真值最大);
- 表示浮點數階碼時,容易判斷是否下溢。
1.3 字符與字符串的表示方法
- ASCII碼:8位,可表示128個字符,最高位爲0,最高位可進行奇偶校驗。
- 字符串:連續的一串字符,每個字節存一個字符。
1.4 校驗碼
- 數據校驗的基本原理是擴大碼距。
- 碼距:任意兩個合法碼之間不同的二進制位的最少位數。
奇偶校驗碼
- 原理:在數據中增加1位奇偶校驗位,是碼距有1增到2。
- 類型:
- 偶校驗:每個碼字(包括校驗位)中1的數目爲偶數;
- 奇校驗:每個碼字(包括校驗位)中1的數目爲奇數。
- 過程:
- 發送端:按照校驗類型,在發送數據後添加校驗位P;
- 接收端:對接收到的數據(包括校驗位)進行同樣類型的校驗,決定數據傳輸中是否存在錯誤。
- 特點:具有檢錯能力(只能檢測有奇數個錯誤的情況),但無糾錯能力。
海明校驗碼
- 原理:在一個數據中加入幾個校驗位,每個校驗位和某幾個特定的信息位構成偶校驗的關係;接收端對每個偶關係進行校驗,產生校驗因子;通過校驗因子區分無錯和碼字中的n個不同位置的錯誤;
- 過程:
-
確定校驗位的位數:
- 設K爲有效信息的位數,r爲校驗位的位數,則整個碼字的位數N應滿足不等式:
- 設K爲有效信息的位數,r爲校驗位的位數,則整個碼字的位數N應滿足不等式:
-
確定校驗位的位置:
- 每個校驗位從低到高被分在海明碼中位號的位置。
-
校驗分組:
- 海明碼的每一位Hi有多個校驗位校驗,其關係是被校驗的每一位位號等於校驗它的各校驗位的位號之和;
- 每個信息位的位置寫成用2的冪次之和的形式 ;
例如下圖:
-
校驗位的形成:
- =第i組中所有位(除)求異或;
- 爲了能檢測兩個錯誤,增加一位校驗,放在最高位;
- =所有位(包括P)求異或。
-
接收端校驗:
- 接收端接收到數據後,分別求 :
=第j組中所有位(包括)求異或
⊕所有位(包括)求異或;
當時,有一位出錯;
由的編碼指出出錯位號,將其取反,即可糾錯。
當時,無錯或有偶數個錯(兩個錯的可能性比較大);
當時,接收的數無錯,否則有兩個錯。
- 接收端接收到數據後,分別求 :
-
- 特點:既能檢錯,又能糾錯。
2. 定點加法、減法運算
2.1 補碼加法
- 定點整數:
- 定點小數:
2.2 補碼減法
- 定點整數:
- 定點小數:
2.3 溢出概念與檢測方法
- 溢出:在定點數機器中,數的大小超出了定點數能表示的範圍。
- 上溢:數據大於機器所能表示的最大正數;
- 下溢:數據小於機器所能表示的最小負數。
- 判別方法:
-
直接判別法:
- 同號補碼相加,結果符號位與加數相反;
- 異號補碼相減,結果符號位與減數相同。
-
變形補碼判別法:採用雙符號位表示補碼。
符號位 結果 00 正 01 上溢 10 下溢 11 負 -
進位判別法:最高數值位的進位與符號位的進位是否相同。
-
3. 定點乘法運算
3.1 串行乘法
- 乘法運算 = 加法+移位。
若乘數數值位n = 4,則累加 4 次,移位4 次。 - 乘法過程
- 由乘數的末位決定被乘數是否與原部分積相加;
- 被乘數只與部分積的高位相加;
- 部分積右移一位形成新的部分積;
- 同時乘數右移一位(末位移丟);
- 空出高位存放部分積的低位。
- 硬件構成
3個具有移位功能的寄存器、一個全加器。
原碼乘法(符號位與數值位分開計算)
-
原碼一位乘
數值位運算規則:- 被乘數和乘數均取絕對值參加運算,符號位單獨考慮;
- 被乘數取雙符號位,部分積的長度同被乘數,初值爲0;
- 從乘數的最低位Yn開始判斷:
- 若Yn=1,則部分積加上被乘數|X|,然後右移一位;
- 若Yn=0,則部分積加上0,然後右移一位。
- 重複,判斷n次。
-
原碼兩位乘
數值位運算規則:- 部分積和被乘數均採用三位符號位;
- 乘數末位增加1位C,其初值爲0,運算過程見表;
乘數字長與運算步驟:
- 若乘數字長爲偶數(不含符號),最多做n/2+1次加法,需做n/2次移位,最後一步不移位;
- 若尾數字長n爲奇數(不含符號),增加一位符號0,最多做n/2+1次加法,需做n/2+1次移位,最後一步右移一位。