大二上,計組原理筆記(3)2.6資料校驗碼

2020-09-28 09:02:14

前言:
我的個人聽課記錄,畢竟是初學,錯誤在所難免,我知道了錯誤會改正更新,歡迎指導也歡迎一起討論學習。

2.6 資料校驗碼

在這裡插入圖片描述

{n,r}即{k+r,r}

2.6.1 奇偶校驗碼(k+1,k)

1.簡單奇偶校驗
只能檢錯,不能糾錯。且只能檢錯奇位錯誤,不能確定出錯的位置。

在這裡插入圖片描述
2.交叉奇偶校驗

可檢錯也可糾錯了。

在這裡插入圖片描述
例:偶校驗

0101 ——> 0
1111 ——> 1
||||     |
1011 ——> 1

可以判斷第二行第四列出錯,所以資訊應該是:01011110,於是計算機可以進行糾錯。

2.6.2海明碼(漢明碼)

有兩種形式:(6,3)(7,4)
可設密碼
在這裡插入圖片描述
M=D × \times × G中,D是資訊碼,G是生成矩陣。(生成矩陣可以自己設定,由此決定這可以來設密碼)
G={ Ik,P }
H={ PT, Im}, H 是校驗矩陣,
校驗子:S=B × \times × HT
例題:(6,3)


                |1 1 0 1 0 1| 
生成矩陣為:G=   |0 1 0 0 1 1|
                |0 0 1 1 0 1|1)將101進行編碼,
   (101* G=111000  (互斥或運算)
    3位的資訊碼一共有八種,各自 * G得到對應的海明碼編碼。
(2)已知生成的編碼為 A= 110101,求它的資訊碼 m 。
    設 m =(m2,m1,m0)
    則 m * G = ( m2,m^m1,m0,m2^m0,m1,m2^m1^m0 )(^為互斥或)
    若 m 用 a5a4a3a2a1a0 表示,
    則m2=a5=1,m1=a2=0,m0=a3=0,所以 m=100
(3)得到的編碼 B= 100101,對其檢糾錯並譯碼。
   第一步:保證G中Ik為「單位矩陣」,即只有主對角線是1.所以需要將G進行r1^r2(互斥或)運算得到
       |1 0 0 1 1 0|                 
   G=  |0 1 0 0 1 1|   
       |0 0 1 1 0 1|    
   第二步:求H的轉置行列式  HT          
                  |110|                     
                  |011|
    HT(H的轉置)=  |101|
                  |100|
                  |010|
                  |011|                                  
    第三步:求校驗子                                    
     S=B*HT=011
   第四步:找出正確編碼。
      由糾錯表可知011代表a3出錯,(記住111代表不止一位出錯,無法糾錯。)
   於是我們知道正確的編碼是 A= 101101
   (由(2)得)則m2=a5=1,m1=a2=0,m0=a3=1,所以 m=101
ps:2)中編碼為A,(3)中編碼為B,是有區別的。
一般用A表示代表沒有錯,不用檢糾錯;B表示不確定,就需要檢糾錯。

(6,3)檢糾錯能力:檢錯兩位,糾錯1位。

2.6.3迴圈冗餘校驗碼(CRC)

不能設密碼了。
在這裡插入圖片描述
例題:(7,4)
(1)選擇生成多項式為1011,把4位元有效資訊1100編成CRC碼。
準備一:
表示生成多項式:1011=X3+X1+X0=X3+X+1
準備二:
表示資訊碼:1100=X3+X2
準備三:
確定2n-k : X7-4 = X3
計算:
求校驗碼:
r(x)=(X3+X2) X3mod (X3+X+1)=x,
x代表10,要三位,則補0,即010
出結果:1100 010

(2)若收到 B=1101010,是否出錯?
準備一:
表示生成多項式:1011=X3+X+1
準備二:
表示B= X6+X5+X3+X
計算:
( X6+X5+X3+X )mod ( X3+X+1 )
= x+1
x+1代表11,空位補0,即011
結果:011不是0,出錯了。

例:求「A」,用CRC(7,4)表示。
A的ASCII碼是41,即
01000001,分成四位有兩份。
0100用CRC表示有7位,
0001用CRC表示有7位,
但計算機中儲存兩個位元組,16位元,於是補0.
0 ( 0100CRC)7位 | 0 (0001CRC)7位
一共就有16位元了。
·
·
·
·
·
·