海明码的编码和校验

本文介绍了海明码的工作原理,它是一种纠错码,能定位并纠正数据传输中的一位错误。通过一个实例展示了如何对二进制数据1011 0110添加校验码,并在接收端检测和修正错误。
摘要由CSDN通过智能技术生成

         海明码(Hamming Code),即汉明码,是一种纠错码。可以在数据传输中发生错误时,查找出出错的位置,从而纠正错误。需要强调的是,海明码只能纠错一位,当有多位出错时,是纠不了的。

         下面以发送二进制数据:

1011 0110

         为例,简述海明码的工作原理。


发送方

        步骤一、往数据中插入校验码,先用字母代替。A插在第1个位置,B插在第2个位置,C插在第4个位置,D插在第8个位置,以此类推。下一个字母E应该插在第16个位置,但该数据当前总共12位(8位原本的数据 + 4位插入的校验码),位数不够。因此结果为:

AB1C 011D 0110

         步骤二、给字母编码:

         当前总共12位,故用4个二进制位即可。

十进制

1

2

3

4

5

6

二进制

0001

0010

0011

0100

0101

0110

十进制

7

8

9

10

11

12

二进制

0111

1000

1001

1010

1011

1100

 

         步骤三、计算字母。

         将之前插入的字母用比特(0或1)来代替。计算方法如下:

         对于“A”,计算以上二进制最低位对应是“1”的数,有1、3、5、7、9、11。这六个数的最低位是1。然后再将数据“AB1C 011D 0110”对于的第1、3、5、7、9、11位相加。

A = ∑( 1, 3, 5, 7, 9, 11 ) = ∑( 0, 1, 0, 1, 0, 1 ) = 1

由于第1位是A,算是0。第3位是1,第5位是0,第7位是1,第9位是0,第11位是1,所以A用1代替。(0+1+0+1+0+1=1,无进位加)

         计算时,该步骤的字母算作0。

         以此类推:对于B,计算以上二进制位对于是1的数:2、3、6、7、10、11。在数据中这些位对于的数分别是B、1、1、1、1、1。所以和为1。

         类似地,计算出C = 0, D = 0。

 

十进制

数据

D

C

B

A

二进制

1

A

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值