校驗碼編碼
碼距與檢錯糾錯:spa
一個編碼系統的碼距就是整個編碼系統中任意(全部)兩個碼字的最小距離。例如:若一個編碼系統有四種編碼分別爲:0000,0011,1100,1111,此編碼系統中0000與1111的碼距爲4;0000與0011的碼距爲2,是此編碼系統的最小碼距。所以該編碼系統的碼距爲2。blog
1.在一個碼組內爲了檢測e個誤碼,要求最小碼距應該知足:d>=e+1class
2.在一個碼組內爲了糾正t個誤碼,要求最小碼距應該知足:d>=2t+1循環
3.同時糾錯檢錯:d>=e+t+1二進制
例如:方法
假如咱們如今要對A,B兩個字母進行編碼。咱們能夠選用不一樣長度的編碼,以產生不一樣碼距的編碼,分析它們的檢錯糾錯能力。im
1.若用1位長度的二進制編碼。若A=1,B=0.這樣A,B之間的最小碼距爲1.數據
合法碼:{0,1};非法碼:{0,1}img
2.若用2位長度的二進制編碼,可選用11,00做爲合法編碼,也能夠選用01,10做爲合法編碼。若以A=11,B=00爲例,A、B之間的最小碼距爲2。合法碼:{11,00}。非法碼:{01,10}
3.若用3位長度的二進制編碼,能夠選用111,000做爲合法編碼。A,B之間的最小碼距爲3。
合法碼:{111,000} 非法碼:{001,010,011,110,101,100}
校驗碼的3種碼
1.奇偶校驗碼
人爲的在編碼後的最高位或最低位加一些校驗碼。具體加的是1。
例如:某編碼如今有2個1,編碼後再加1個1。使1的個數變成奇數3個。這樣在傳輸過程若是出錯,則會變成偶數個1。從而知道出錯了。
只能檢測代碼中奇數位出錯的編碼,但不能發現偶數位出錯的狀況。
2.海明碼
海明碼的校驗碼的位置必須是在2^n位置(n從0開始,分別表明從左邊數起分別是第一、二、四、八、16......),信息碼也就是在非2n位置、
設數據位是n位,校驗位是k位。則n和k必須知足如下關係:
2^k >= n+k+1
練習:海明碼是一種糾錯碼,其方法是爲須要校驗的數據位增長若干校驗位,使得校驗位的值決定於某些被校驗位的數據,當被校驗數據出錯時,可根據校驗位的值的變化找到出錯位,從而糾正錯誤,對於32位的數據,至少須要加()個校驗位才能構成海明碼。
A .3 B .4 C.5 D.6
以10位數據爲例,其海明碼錶示爲D9D8D7D6D5D4P4D3D2D1P3D0P2P1中,其中Di(0 <= i <=9)表示數據位,Pj(1 <= j <=4)表示校驗位,數據位D9由P四、P3和P2進行校驗(從右至左D9的位序爲14,即等於8 + 4 + 2,所以用第8位的P四、第4位的P3和第2位的P2校驗),數據位D5由()進行校驗
A .P4P1 B.P4P2 C.P4P3P1 D.P3P2P1
3.循環冗餘校驗碼CRC:
這個校驗碼會產生一個屢次方程,這個屢次方程會跟信息碼會有一個模%2運算。所得的餘數就是CRC所須要加的位數。
練習: