奇偶校驗:
不管是奇校驗還是偶校驗,監督位都在數據的後面,而且僅一位。如:
信息位 |
監督位 |
111001110 |
1 |
編碼原理:
信息位 監督位 |
1110 0110 00 |
1110 0110 00 |
奇校驗時 |
0 |
1 |
偶校驗時 |
1 |
0 |
上面的形式是10位數據位+1位監督位。
奇校驗,要保證插入監督碼後”1“的個數爲奇數,其中數據位是不變的,所以監督位置1或0;也就是說,若數據位中”1“的個數是偶數,則監督位爲1;若數據位中”1“的個數是奇數,則監督位爲0。
偶校驗,要保證插入監督碼後”1“的個數爲偶數,其中數據位是不變的,所以監督位置1或0;也就是說,若數據位中”1“的個數是偶數的話,則監督位爲0;若數據位中”1“的個數是奇數,則監督位爲1。
公式表示:
設碼組長度爲n,前n-1位信息碼元,第n位爲監督位
在偶校驗時 有:
則監督位:
在奇校驗時 有:
則監督位:
其中表示模2和,等同“異或”運算。
奇偶校驗只能發現單個或者奇數個錯誤,而不能校測出偶數個錯誤,因而它的校錯能力不強。
海明碼:
奇偶校驗只能檢錯,並不能糾錯,因爲一位的監督碼並不足以把錯誤的位置表示出來。海明碼是一種多重(複式)奇偶檢錯系統。監督位的長度並不一定,信息位越長,監督位越長,因爲它還要把錯誤的位置表示出來。
若信息長爲n,信息位數爲k,監督位爲r=n-k。則要求:
或
若有兩個監督位,那麼兩個校正字就有4種可能的組合:
00 |
無錯 |
01 |
第一位出錯 |
10 |
第二位出錯 |
11 |
第三位出錯 |
監督位不是放在信息位的後面,也不是連續的。
監督位在上,n是爲整數且。假如四位信息碼爲“1011”,怎麼去求校驗位、、的值。
海明碼也分爲偶校驗海明碼、奇校驗海明碼。下面採用偶校驗舉例。
對信息碼“1011”進行海明編碼:
第一步:確定校驗碼的個數和位置。
已知:信息位數k=4,由得最小的校驗位數r=3。位置在上。P代表校驗位,D代表信息位,如下:
碼字位置(二進制) |
1(0001) |
2(0010) |
3(0011) |
4(0100) |
5(0101) |
6(0110) |
7(0111) |
碼位類型 |
|||||||
碼值 |
? |
? |
1 |
? |
0 |
1 |
1 |
第二步:根據關係式求出每一個校驗位。
負責校驗信息位、、,在偶校驗時有
則:=0
負責校驗信息位、、,在偶校驗時有
則:=1
負責校驗信息位、、,在偶校驗時有
則:=0
對信息碼“1011”進行海明編碼後爲“0110011”。
在這裏的每一個校驗位該負責哪幾個信息位是有規律的,從上面的表格可以看出來,每一個校驗碼跟其負責的任一信息位的碼字位置進行“與”運算等於1,根據這規律就知道每個校驗位負責的所有信息位。
如: (0001)&(0001)=1 (0001)&(0101)=0
(0001)&(0110)=1 (0001)&(0111)=1
所以負責的校驗信息位是、、。同理得出、。
以上是發送方的處理過程,在接收方根據下面3個校驗方程對接收到的信息進行奇偶測試:
A==0
B==0
C==0
以A爲最低有效位,可構成二進制數CBA.
若CBA=000,即等式右邊都等於0,說明沒有錯;若CBA=001,說明出錯;若CBA=100,說明出錯。