奇偶效验码和海明码

奇偶效验码

奇偶校验码是奇校验码和偶校验码的统称。它们都是通过在要校验的编码上加一位校验位组成。

奇校验码:加上校验位后,编码中 1 的个数为奇数个

偶校验码:加上校验位后,编码中 1 的个数为偶数个

 

水平奇偶效验码

例:

原编码 奇校验 偶校验
0000 0000 1 0000 0
0010 0010 0 0010 1
1100 1100 1 1100 0
1010 1010 1 1010 0

 

 

 

 

 

垂直奇偶效验码

例:

有32位数据 10100101 00110110 11001100 10101011

  垂直奇校验 垂直偶校验
 原编码 10100101 10100101
00110110 00110110
11001100  11001100 
10101011 10101011
 校验码 00001011 11110100

 

 

 

 

 

 

缺点:

只能检测出奇数位出错,且无法检测出哪位出错。

设原编码为0000,传输的过程中变成了1001。若使用奇校验,原编码是00001,传输过后会变成10011,1仍然是奇数个,无法校验;如果使用偶校验,原编码是00000,传输过后会变成10010,1仍然是偶数个,同样无法校验。

 


 

海明码

海明码也是利用奇偶性来校验数据的,它是一种多重奇偶校验检错系统。通过在数据位之间插入k个校验位,来扩大码距,从而实现检错和纠错。

注:码距指两个码组对应位上数字的不同位的个数。

假设数据位数为m,向其(2的幂次方,如1,2,4,8……)各位插入k位校验码,且满足m+k+1<2k

例:101101100,求海明码。

101101100,9+k+1<2k

解得,k=4,即校验码位数为4位

 

位置 1 2 3 4 5 6 7 8 9 10 11 12 13
原始信息位     1   0 1 1   0 1 1 0 0
用到的校验码 校验位1   校验位2   1+2=3  校验位3   1+4=5  2+4=6  1+2+4=7  校验位4   1+8=9 2+8=10  1+2+8=11  4+8=12  1+4+8=13

 

 

 

 

即得每个校验位校验了哪些位置:

  bit1=3,5,7,9,11,13

  bit2=3,6,7,10,11

  bit4=5,6,7,12,13

  bit8=9,10,11,12,13

 通过原始信息位,对各位进行模2运算(异或:相同为0,不同为1)得:

  bit1=1,0,1,0,1,0=1

  bit2=1,1,1,1,1=1

  bit4=0,1,1,0,0=0

  bit8=0,1,1,0,0=0

得校验码分别为:1,1,0,0

posted on 2018-10-05 15:12  花心和尚  阅读(2061)  评论(0编辑  收藏  举报

导航