奇偶效验码和海明码

奇偶效验码

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

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

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

 

水平奇偶效验码

例:

原编码奇校验偶校验
00000000 10000 0
00100010 00010 1
11001100 11100 0
10101010 11010 0

 

 

 

 

 

垂直奇偶效验码

例:

有32位数据 10100101 00110110 11001100 10101011

 垂直奇校验垂直偶校验
 原编码1010010110100101
0011011000110110
11001100 11001100 
1010101110101011
 校验码0000101111110100

 

 

 

 

 

 

缺点:

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

设原编码为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位

 

位置12345678910111213
原始信息位  1 011 01100
用到的校验码校验位1  校验位2  1+2=3 校验位3  1+4=5 2+4=6 1+2+4=7 校验位4  1+8=92+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

转载于:https://www.cnblogs.com/zhanghx/p/9744885.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值