天天看點

計組 |二、資料的表示和運算

[一 數制和編碼](#一 數制和編碼)

[二 定點數](#二 定點數)

一 數制和編碼

1.數制互相轉換

2.BCD碼

3.字元與字元串

4.校驗碼

  • 奇偶校驗
  • 海明碼
  • 循環備援校驗碼

計組 |二、資料的表示和運算

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]補