[一 數制和編碼](#一 數制和編碼)
[二 定點數](#二 定點數)
一 數制和編碼
1.數制互相轉換
2.BCD碼
3.字元與字元串
4.校驗碼
- 奇偶校驗
- 海明碼
- 循環備援校驗碼
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yN4MDOwIjMzIzNykDMxIDMy0SZnFWbp9CXyVGdzFWbvw1dhJ3LcNXZnFWbp9CXphmen5WYphnblh2YvwVbvNmLlVGdpd2Lc9CX6MHc0RHaiojIsJye.png)
1.1 r進制到十進制
1.2 二進制到八進制、十六進制
1.3 十進制到r進制
3.1 字母存儲
3.2 漢字存儲
4.1 奇偶校驗
4.2 海明碼
4.2.1 求解步驟
(1)确定校驗碼位數
- \(2^k\ge n+k+1(n+k為任何一位都可能出錯,還有1種正确狀态)\)
- n個資訊位;k個校驗位,校驗碼有\(2^k\)種狀态;
(2)确定校驗碼位置
- \(P_i\)放在\(2^{i-1}\)的位置上,其餘按順序
- 資訊位\(D_4D_3D_2D_1(1010)\),校驗位\(P_3P_2P_1\),海明碼為\(H_7H_6H_5H_4H_3H_2H_1\)
計組 |二、資料的表示和運算
(3)求校驗位的值
- 由\(H_i\)位置\(i\)算出對應的二進制碼
- 從右到左按列\(h\)觀察,選出所有為1的\(H_i\)。找出\(H_i\)對應的資訊位\(D_j\),對所有\(D_j\)進行異或運算,則可得出對應的\(P_h\)
計組 |二、資料的表示和運算
(4)糾錯
- 對校驗方程進行計算
- 若出現偶校驗錯誤,将結果\(S_3S_2S_1\)轉為十進制,對應位置即為錯誤位置
計組 |二、資料的表示和運算
4.2.2 檢錯與糾錯
- 檢錯能力:2;糾錯能力:1
-
全體校驗
當兩個跳變時,無法根據對應的位置确定它就是出錯位。即上面無法差別是1位錯還是2位錯。是以引入全校驗位,在最後面加上\(P_全\),該值是由原始資料得出偶校驗碼。
現在對傳輸的資料進行一次全體偶校驗進行分析
計組 |二、資料的表示和運算
4.3 循環備援校驗碼
CRC。資料發送、接受方約定一個“除數”,保證餘數為0
4.3.1 求CRC碼
(1)确定長度與二進制碼
- 資訊碼長度K;
- 校驗碼R=生成多項式最高次幂;
- 校驗碼位數N=K+R
- 二進制碼:生成多項式的系數
(2)由模2除法求CRC碼
- 資訊碼低位補R個0(右側)
- 模2除法
- 被除數:資訊位+R個0
- 除數:二進制碼
- 除的時候看最高位作為商,減的時候用異或運算。
- 餘數比被除數少一位,餘數結果為校驗位
- CRC碼:資訊位+校驗位
4.3.2 檢錯與糾錯
- 示例
計組 |二、資料的表示和運算 -
檢錯:
可檢測出所有奇數個錯誤;
可檢測出所有雙比特的錯誤;
可檢測出所有小于等于校驗位長度的連續錯誤;
-
糾錯:
K個資訊位,R個校驗位,若生成多項式選擇得當,且 \(2^R\ge K+R+1\),CRC碼可糾正1位錯。
二 定點數
1.定點數的表示
2.定點數運算
- 補碼作用
- [移位運算](#2.2 移位運算)
- [加法運算](#2.3 加減運算)
表示範圍
類型 | 範圍 |
---|---|
無符号數(n) | \(0\sim2^n-1\) |
原碼/反碼整數(n+1) | \(-(2^n-1)\le x\le 2^n-1\) |
原碼/反碼小數(n+1) | \(-(1-2^{-n})\le x\le 1-2^{-n}\) |
補碼/移碼整數(n+1) | \(-2^n\le x\le2^n-1\\比原碼多表示一個-2^n\) |
補碼小數(n+1) | \(-1\le x\le1-2^-n\\比原碼多一個-1\) |
2.1 補碼作用
減法換加法,減少硬體成本(ALU無需內建減法器)
\(帶餘除法:\\x=qm+r\\x~mod~12=r\\(q為整數,r為餘數,m為模。類似周期,即要在r相等的情況下找到x)\)
- 模餘數相同的數是同一類,等價。即可知-3和9在模12的條件下是等價的。
- 互為補數:兩個數的絕對值=模。減去一個數即加上這個數的補數。也就是\(10+(-3)\)可轉換成\(10+9\)再取模。
- 而計算機是以\(2^8(1,00000000)\)為模的,[a]補=模-|a|=全部取反再+1
2.2 移位運算
2.2.1 算數移位
補碼的算數移位
- 正數和原碼一緻
- 由于負數補碼=反碼末位+1。是以反碼最右邊連續的1會因進位變成0,直到第一個0。故負數補碼最右邊的1及其右邊與原碼一緻。而其左邊與反碼一緻。是以造成了:
- 右移(同反碼):高位補1,低位舍棄。
- 左移(同原碼):低位補0,高位舍棄。
加法舉例
2.2.2 邏輯移位
RGB值例子:例如用3B儲存102、139、133
102的二進制數儲存進去并向左移動16位
139的二進制數儲存進去并向左移動8位
133的二進制數儲存進去
相加得3B的RGB值
2.2.3 循環移位
2.3 加減運算
2.3.1 溢出判斷
-
方法一:一位符号位
\[V=AB\overline{S}+\overline{AB}S\\加數的符号位為:A、B;結果的符号位S:(乘法表示與,加法表示或)
\]
-
方法二:一位符号位,根據進位情況判斷
\[V=C_1\oplus C_s\\
結果的最高數值位的進位:C_1;符号位的進位:C_s;
-
方法三:雙符号位
\[V=S_{s1}\oplus S_{s2}\\正數符号位:00;負數符号位11;\\結果的兩個符号位分别是S_{s1}S_{s2}
==>V=0無溢出;V=1溢出
2.3 乘法運算
乘數從左到右依次乘以被乘數,每次都要錯位
-
原碼一位乘法
符号位進行異或運算
數值位取絕對值進行乘法運算
ACC乘積高位
MQ乘數、乘積低位
X被乘數
ACC置0
MQ最右一位開始:1-》ACC+被乘數;0-》ACC加上0
通過ALU,結果放在ACC寄存器
ACC MQ邏輯右移。之後運算過程像上面一樣
部分積:邏輯右移後放在MQ的位
重複數值位n次
結果:ACC與MQ組合,第一位為符号位,後面為小數部分
處理符号位
對于整數的,符号位是最右邊的一位
---n論加法,移位
--根據MQ最低位确定加什麼。加法可能是+0、+[x]原碼
-
補碼一位乘法
n輪加法,移位,再一次加法
--根據MQ最低位和輔助位确定加什麼。
輔助位-最低位=1----+0
輔助位-最低位=0----+[x]補