二進(jìn)制數(shù)據(jù)經(jīng)過傳送、存取等環(huán)節(jié),會發(fā)生誤碼(1變成0或0變成1),就有了如何發(fā)現(xiàn)及糾正誤碼的問題。
驗(yàn)錯、糾錯、碼距
驗(yàn)錯顧名思義,檢驗(yàn)錯誤。糾錯,在驗(yàn)錯的基礎(chǔ)上,還要糾正錯誤。
碼距,一言蔽之:不同位的個數(shù)即是碼距。兩個碼組對應(yīng)位上數(shù)字的不同位的個數(shù)稱為碼組的距離,簡稱碼距,又稱海明(Hamming)距離。例如00110和00100碼距為1,12345和13344碼距為2,Caus和Daun碼距為2。
海明校驗(yàn)碼公式(假設(shè)為k個數(shù)據(jù)位設(shè)置r個校驗(yàn)位)
2r ≥ k + r + 1
海明校驗(yàn)碼
求1011的海明碼
1.根據(jù)公式:k等于4。代入2r ≥ 5 + r可知,r最小為3。所以海明碼位數(shù)為4+3=7位
2.填表:信息位從高到低依次存放;海明校驗(yàn)碼放在2的冪次位上
位數(shù) 1 2 3 4 5 6 7
信息位 1 1 0 1
校驗(yàn)位 r1 r2 r3
下標(biāo) 1 2 1+2 4 4+1 4+2 4+3
海明碼 r1 r2 r1+r2 r3 r3+r1 r3+r2 r3+r2+r1
得到r1、r2、r3位置:
r1:3、5、7
r2:3、6、7
r3:5、6、7
3.異或運(yùn)算(同0異1):
第3、5、6、7位分別為1、1、0、1,則
r1=3⊕5⊕7 ==> 1⊕1⊕1 ==> 0⊕1 ==> 1
r2=3⊕6⊕7 ==> 1⊕0⊕1 ==> 1⊕1 ==> 0
r3=5⊕6⊕7 ==> 1⊕0⊕1 ==> 1⊕1 ==> 0
4.代入表格,從低位到高位排序的海明碼為:1010101
位數(shù) 1 2 3 4 5 6 7
信息位 1 1 0 1
校驗(yàn)位 1 0 0
循環(huán)冗余校驗(yàn)碼(CRC)
假設(shè)使用的生成多項(xiàng)式是 G(x)=x3+x+1。4位的原始報(bào)文為1010,求編碼后的報(bào)文?
1.根據(jù)G(x)=x3+x+1得到二進(jìn)制1011:G(x)=x3+x+1等價于G(x)=x3+x1+x0。其中x2沒有,而指數(shù)3、1、0位有。則第3、1、0為1,第2位為0,即1011
2.1101共有4位,在原始報(bào)文后添(4 - 1)個0,得到1010 000
3.對第二步的1010 000進(jìn)行模2除法(同0異1):
1 0 0 1
___________________
|
1 0 1 1 | 1 0 1 0 0 0 0
/ 1 0 1 1
——————————————————
0 0 1 0
0 0 0 0
——————————————————
0 1 0 0
0 0 0 0
——————————————————
1 0 0 0
1 0 1 1
——————————————————
0 1 1 (余數(shù),校驗(yàn)位)
4.編碼后的報(bào)文(CRC碼):原始報(bào)文1010加上余數(shù)011,即1010 011