海明校验码详解

海明校验码

奇偶检验

  • 奇检验:判断序列中1的个数是否为偶数,是的话在序列前添加1,否的话在序列前添加0
  • 偶检验:判断序列中1的个数是否为奇数,是的话在序列前添加1,否的话在序列前添加0
  • 举例:1111的奇检验为11111,偶检验为01111

海明检验码的检验过程

下面以序列1010为例阐述其过程
首先通过下面的公式求得校验位的个数

2 k > = m + k + 1 2^k>=m+k+1 2k>=m+k+1

其中,m为序列的长度,k为校验位的个数
对于1010m4,求得k最小值为3,即为放置3个校验位
校验位的放置位置为 2 n , n = 0 , 1 , 2 , 3... 2^n, n=0,1,2,3... 2n,n=0,1,2,3...
在此放置位置为1, 2, 4,校验位+信息位共7位,则如下表:

1234567
P1P21P3010

为了让P1, P2, P3m3, m5, m6, m7产生联系,则划分组为如下:

P1:m3m5m7
P2:m3m6m7
P3:m5m6m7

划分依据:将1-7转成二进制编码(001,010,011,100,101,110,111),P11在第一位,m3, m5, m7的第一位也都有1,故将其放一组,其他组同理

上表转化为:

P1100
P2110
P3010

下面就是确定P1, P2, P3的值:

奇检验偶检验
10001001100
11011100110
01000101010
取出添加的数字:
奇检验偶检验
10001
11010
01001

将奇检验的海明校验码与偶检验的海明校验码填入表中

1234567
奇检验0110010
偶检验1011010

下面以奇检验的海明校验码为例:
假如发送方发过去的序列为0110011
标记位置:

0110011
1234567
P1P2m3P3m5m6m7
按下面的书写:
e1P1m3m5m7
e2P2m3m6m7
e3P3m5m6m7
将数值带入:
e10101
e21111
e30011
然后对每一行进行奇检验:
e1e2e3
111

111转为十进制,即为7,对比发现,确实是第7位出错
偶检验同理
如果无错,则e1, e2, e3转化为十进制为0

个人理解,如有错误,烦请纠正

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值