海明码解释以及海明码的纠一检二

海明码解释以及海明码的纠一检二

海明码定义:具有纠正一位错误的能力。

1、确定校验位个数

核心公式:2^r ≥k+r+1 (其中r代表校验个数)

**(重要!)**从公式带入计算可得一张表:

记住这张表,选择题就可以秒答。

(A:假设有8位信息位,则需要插入____位校验码呀?Q: 4位。)

2、确定校验位的位置

核心:校验码Pi 必须是在2的n次方位置,即只能放在H1,H2,H4,H8

注意:这里指的位置都是从左向右排序,即:H5 H4 H3 H2 H1

以下以4位信息码为例进行编码。

信息码组:1011 -> 即: D3 D2 D1 D0 = 1 0 1 1

根据公式:2^r ≥k+r+1(或者表)得校验位 r=3,即校验位为 P1 P2 P4。

又因为上述Pi 只能放在2的n次方的位置,所以 P1插入H1,P2插入H2,P4插入H4。

信息码填入剩下的位置。

H7H6H5H4H3H2H1
D3D2D1P3D0P2P1
1010101

3、计算校验位 Pi

P1(H1) = H3 ⊕ H5 ⊕ H7

P2(H2) = H3 ⊕ H6 ⊕ H7

P4(H4) = H5 ⊕ H6 ⊕ H7

计算可得:P1 = 1,P2 = 0,P3 = 0

所以:最终海明码: H7 H6 H5 H4 H3 H2 H1 = 1 1 0 0 1 1 0

4、纠错和检错

设检测位G1,G2,G3:

G1 = P1 ⊕ H3 ⊕ H5 ⊕ H7 ;

G2 = P2 ⊕ H3 ⊕ H6 ⊕ H7;

G3 = P3 ⊕ H5 ⊕ H6 ⊕ H7;

当偶校验时:G3 G2 G1 值皆为0则数据无误,若G3 G2 G1不全为0说明数据传输有误,且其十进制指出了错误发生的位置。

(例:G3 G2 G1 = 101,其十进制为 5 ,即:H5 发生了错误,H5的位置为D1,则说明D1传输错误,则将D1的位置取反,即可纠错。)

所以海明码定义:具有纠正一位错误的能力。

5、海明码的纠一检二

如果只有一位比特发生错误,那么可以进行检错并且纠错

如果发生了两位比特的错误,假设是P1P2位的值发生了翻转,那么G1和G2的值就会变为一,但是,如果只有H3发生了翻转(也就是一位比特发生了差错),同样会导致P1P2的值发生翻转,所以此时只能检测到错误,而不能纠错。那如果发生了三位比特的错误呢,假设现在P1P2H3发生了错误,那么G1G2的值还是00,也就是无法检测出错误,所以我们说海明码具有一位比特的纠错能力和两位比特的检错能力。

6、码距

最后我们再来说说码距,码距是什么呢?是一个编码系统中任意两个合法编码(码字)之间不同的二进数位(bit)数,而整个编码系统中任意两个码字的的最小距离就是该编码系统的码距。

在一个编码系统,用三个bit来表示八个不同信息中。在这个系统中,两个码字之间不同的比特数从1到3不等,但最小值为1,故这个系统的码距为1。如果任何码字中一位或多位被颠倒了,结果这个码字就不能与其它有效信息区分开。例如,如果传送信息001,而被误收为011,因011仍是表中的合法码字,接收机仍将认为011是正确的信息。

然而,如果用四个二进数字来编8个码字,那么在码字间的最小距离可以增加到2,8个码字相互间最少有两比特的差异。因此,如果任何信息的一个数位被颠倒,就成为一个不用的码字,接收机能检查出来。例如信息是1001,误收为1011,接收机知道发生了一个差错,因为1011不是一个合法码字。然而,差错不能被纠正。假定只有一个数位是错的,正确码字可以是1001,1111,0011或1010。接收者不能确定原来到底是这4个码字中的那一个。也可看到, 在这个系统中,偶数个(2或4)差错也无法发现。

为了使一个系统能检查和纠正一个差错,码间最小距离必须至少是“3”。最小距离为3时,或能纠正一个错,或能检二个错,但不能同时纠一个错和检二个错。编码信息纠错和检错能力的进一步提高需要进一步增加码字间的最小距离。所以从这里可以看出,海明码的码距是3

码距越大,纠错能力越强,但数据冗余也越大,即编码效率低了。所以,选择码距要取决于特定系统的参数。数字系统的设计者必须考虑信息发生差错的概率和该系统能容许的最小差错率等因素。要有专门的研究来解决这些问题。

7、码距的性质

最后,再说说几个码距的性质

1)海明码如果要检测出D位错误,那么久需要一个码距大于等于D+1的编码方案,如果要纠正D位错误,那么需要一个码距为2D+1的编码方案

2)L - 1 = D + C 且 D>= C

其中L为码距,D为检错出D位,C为纠错出C位,这个公式也可以验证海明码,海明码码距为3,纠错为1位,检错为1位或者(检错为2位,纠错为0位),接下来我们用这个公式验证性质一,如果要检测出D位错误,那么C=0,L>=D+1,如果要纠正D位错误,那么至少需要检测出D位错误 ,也就是L >= 2D+1,成立。

8、参考链接

http://blog.sina.com.cn/s/blog_642463640102vngp.html

https://blog.csdn.net/woshinia/article/details/22381075

  • 24
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
海明码的工作原理是通过在数据中添加冗余比特位来实现检错和纠错的功能。其中,每个比特位都有其对应的位置编号,比如第1、2、4、8、16位等。对于每一个比特位,都有多个冗余比特位与之对应,这些冗余比特位的编号是采用二进制表示的,例如第1个比特位对应的冗余比特位编号为1、3、5、7,这些编号中的每一个都可以表示为二进制形式下的1。 在发送方进行编码时,首先将数据按照一定规则进行分组,通常是按照一定的字节长度进行分组。然后,对每一个数据组都进行冗余比特位的计算,具体的计算方式是将原始数据中的某些比特位进行异或运算,并将结果作为冗余比特位添加到数据中。这样,就得到了一个完整的带有冗余比特位的数据包,可以通过网络进行传输。 在接收方进行解码时,首先进行检错,即检查是否有比特位发生错误。检错的方式是将接收到的数据中的每个比特位与相应的冗余比特位进行异或运算,如果发现某些冗余比特位和实际计算结果不一致,则说明这个比特位发生了错误。通过这种方式,可以快速地检测出哪些数据发生了错误。 如果发现错误,则海明码会利用冗余比特位进行纠错。具体的纠错方式是,根据冗余比特位的值,确定哪些比特位发生了错误,并进行修正。例如,如果冗余比特位的值为1,而实际计算结果为0,那么说明这个比特位发生了错误,需要将其修正为1。 最终,接收方将解码后的数据传送至应用程序中进行处理。通过这种方式,海明码能够有效地检测和纠正数据传输中的错误,提高了数据传输的可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值