海明校验码

以最多只有一位出错为前提进行说明

1.校验位的位数的确定:

数据位为n位,校验位有k位,传输过程中最多只有1位出错,所以出错的情况总共n+k种,正确的情况有1种,所以

校验位要能表示所有的情况即

                                                          2^k >= n + k + 1

2.海明校验码的规则:

 a.如果故障字(定义见下说明)各位全为0,则表示没有发生错误

 b.如果故障字中有且仅有一位为1,则表示校验位出错,不需要纠正,且故障字的数值即为出错位的下标(从1开始),即校验位的下标

 c.如果故障字中多位为1,则表示有一个数据位出错,其在码字中的出错位置下标即使故障字的数值(注意这里的下标从1开始),只需将出错位取反即可纠正。

3.举例说明

假设n为8, 则2^4 >= 8 + 4 + 1,校验位为4位,P4 P3 P2 P1  为接收到的校验位,P4' P3' P2' P1'根据接收到的数据位D8~D1重新计算的校验位,故障字的定义为:S4 S3 S2 S1 = P4 P3 P2 P1 ^ P4' P3' P2' P1' (按位异或),根据规则b,可以确定P1 P2 P3 P4在整个12位码字中的 位置(0001 0010 0100 1000)即(1, 2, 4, 8 位为校验码,剩余数据位按顺序插入),最终得到整个码字的排序

                      D8 D7 D6 D5 P4 D4 D3 D2 P3 D1 P2 P1 

由这个顺序可以推出P1 P2 P3 P4 是哪几位数据的奇偶校验(这里采用偶校验)

D1的位置为3,(0011),按照上述规则c,即出错时故障字S4S3S2S1为0011,即D1为出错时 要改变 P1所在的组 和 P2 所在的组的奇偶性,即D1同时在P1组和P2组中,以此类推D2在P1组和P3组中 …… 一直到D8

最终得到结果,(这里采用偶校验,奇校验的话再⊕1)

P1 = D1⊕D2⊕D4⊕D5⊕D7

P2 = D1⊕D3⊕D4⊕D5⊕D7

P3 = D2⊕D3⊕D4⊕D8

P4 = D5⊕D6⊕D7⊕D8

最终故障字的求解公式 S4 S3 S2 S1 = P4 P3 P2 P1 ^ P4' P3' P2' P1'  可以拆开

S1 = P1⊕D1⊕D2⊕D4⊕D5⊕D7

S2 = P2⊕D1⊕D3⊕D4⊕D5⊕D7

S3 = P3⊕D2⊕D3⊕D4⊕D8

S4 = P4⊕D5⊕D6⊕D7⊕D8

即接收端接收到码字可以按照上述公式求出故障字,根据故障字的意义进行纠错,按照上述规则a ,b, c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值