1. 程式人生 > >【軟考】校驗碼之詳細總結

【軟考】校驗碼之詳細總結

這一知識點困擾我許久了,在光光的指導下,我們小組成功攻克海明碼!徹底解決這一問題。

正文

一、奇偶校驗碼

1.概念:

通過在編碼中增加一位校驗位來使編碼中的1的個數為奇數(奇校驗)或偶數(偶校驗),從而使碼距為2

2.實踐,前提條件:只有一位錯誤。

1)奇校驗:
0001,加一位00011奇數的個數為2,所以編碼不正確
2)偶校驗:
0001,加一位00011偶數的個數為2,所以編碼正確

3.作用

奇偶校驗碼只能查是否有錯誤,而且要求只有一位出現錯誤。

二、海明碼

1.概念

海明碼是一種很有效的校驗方法,是隻要增加少數幾個校驗位,就能檢測出二位同時出錯、亦能檢測出一位出錯並能自動恢復該出錯位的正確值的有效手段,後者被稱為自動糾錯。

2.條件:設資料位是n位,校驗位為k位,資料為01101001

第一步:分析表示式:2^k-1>=n+k

第二步:畫表格(pi=2^i-1)

1)根據Pi=2(i-1)
P1=H(2(1-1))=H1
P2=H(2(2-1))=H2
.
.
.
依次算出P對應的H,結果如下表

H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12
P1 P2 D0 P3 D1 D2 D3 P4 D4 D5 D6 D7

2) 根據表格分析:D0對應的H3的下標3=2+1(從最大的開始找,3裡面最大的是2),即H2對應的P2加上H1對應的P1;D0=P2+P1,依次算出。

資料位 海明碼 校驗位
D1 H5 P1+P3
D2 H6 P2+P3
D3 H7 P3+P2+P1
D4 H9 P4+P1
D5 H10 P4+P2
D6 H11 P4+P2+P1
D7 H12 P4+P3

4)結果
D1=P1+P3
D2=P2+P3
D3=P3+P2+P1
D4=P4+P1
D5=P4+P2
D6=P4+P2+P1
D7=P4+P3

5)第三步:求校驗位P,從4)中找,有P1、P2、P3、P4的D1-D7
P1=D0⊕D1⊕D3⊕D4⊕D6; (這幾個D的結果中都有P1)
P2=D0⊕D2⊕D3⊕D5⊕D6
P3=D1⊕D2⊕D3⊕D7
P4=D4⊕D5⊕D6⊕D7
因為資料為:01101001對應著D7-D0,又因為同0異1(比如1⊕1=0,0⊕1=1)
故P1=1,P2=0,P3=1,P4=0
第四步:完整的海明碼為:101100100110

3.作用

海明碼可以查錯,也可以糾錯,限制較少

三、迴圈冗餘校驗碼

1.概念

奇偶校驗碼和海明校驗碼都是採用奇偶檢測為手段榆錯和糾錯的,而迴圈冗餘校驗則是通過某種數學運算來建立資料位和校驗位的約定關係的

2.實踐

f(x)=x4+x3+x+1
生成多項式:11011,因為4次方到0次方,只有2次方的位置沒有數,故用0表示
原始報文110010101010011
原始報文除以多項式的結果就是迴圈冗餘校驗碼.

四、碼距

將其中所有的合法碼字的最小距離值稱為這個編碼體制的碼距
例如:
1100
1101之間碼距為1,因為只有最低位翻轉了。

1001
0010之間碼距則為3,因為只有1位沒有變化

小結

校驗碼總結仍有不足之處,如有指教,不勝感激。