海明码校验

1、什么是海明码(提出者Richard Hamming )
海明码是一种多重(复式)奇偶检错系统,用于检错和纠错。
2如何确定校验码
其实计算海明校验码的值只需三步:

对于原始数据信息位m,计算得出需要的k位校验码

如何确定最小的校验位数 k k k
假设原有信息为 m m m位,则和校验位加起来长度有 m + k m+k m+k.校验位数k可以确定 $2^k $个状态,这些状态中必有一个其所有奇偶测试都是真的,于是剩下 2 k − 1 2^k-1 2 
k
 −1 种状态。所以通过
2 k − 1 > = m + k 2^k-1>=m+k

k
 −1>=m+k
可以算出 k k k
如原始信息为0110 1110 8位
2 k − 1 > = 8 + k 2^k-1>=8+k

k
 −1>=8+k
导出
k = 4 k=4
k=4
海明校验码是放在2的幂次位上的,如 1,2,4,8,16…等

计算校验码

来一波例子,假设原始信息为

位置    8    7    6    5    4    3    2    1
原始信息位    0    1    1    0    1    1    1    0
第一步

     计算出K=4
1
第二步

    确定校验码的位置在1 ,2 ,4,8位置上
1
则新的信息位:

位置    12    11    10    9    8    7    6    5    4    3    2    1
新的信息位    0    1    1    0    H8    1    1    1    H4    0    H2    H1
第三步

计算校验位的值,也是最为关键的一步
1
位置    二进制码
1    0001
2    0010
3    0011
4    0100
5    0101
6    0110
7    0111
8    1000
9    1001
10    1010
11    1011
12    1100
海明码    出现的位置    对应位置上的值异或    结果
H1    3,5,7,9,11    0⊕1⊕1⊕0⊕1    1
H2    3,6,7,10,11    0⊕1⊕1⊕1⊕1    0
H4    5,6,7,12    1⊕1⊕1⊕0    1
H8    9,10,11,12    0⊕1⊕1⊕0    0
最终的信息位为

位置    12    11    10    9    8    7    6    5    4    3    2    1
最终信息位    0    1    1    0    0    1    1    1    1    0    0    1
校验码H8H4H2H1 = 0101

接收端如何检验和纠错呢
假设 0110 0111 1001 ->传输为 0111 0111 1001
0111 0111 1001 按上文重新算出校验码:H8H4H2H1=1100

出错的位数:原信息的校验码⊕出错后信息校验码
0101⊕1100=1001 转化为10进制就是第9位 属于出错位
————————————————
版权声明:本文为CSDN博主「sunny_phper」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/coolskyying/article/details/78963550

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值