纠错编码----海明码(汉明码)

纠错编码----海明码(汉明码)

可以发现双比特错,但只能纠正单比特错。

纠错编码:

不仅可以发现错位,还可以指出错位的位置,为自动纠错提供数据。

海明码:

可以发现双比特错,但只能纠正单比特错。

海明码工作原理:

动一发而牵全身(在数据中有多个校验码,可能一个比特受多个校验码校验,当一个比特出了差错,可以通过校验码看出哪个比特出错)

海明码工作流程:

1.确定校验码位数r

n为有效信息的位数,k位校验码位数:
       2^k>=n+k+1;
       
例如:D=1010  (n=4)
           带入上述公式得出 :
           k = 3 

得出对应的海明码位数为  4+3=7

2.确定校验码和数据的位置

Note:二进制从0001开始,千万不要从0开始

校验码只能放在2的几次方的位置
p1  放在20次方 = 1
p2  放在21次方 = 2
p3  放在22次方 = 4

D = 1 0 1 0 (D4--D1)

| 二进制 | 0111 | 0110 | 0101 | 0100 | 0011 | 0010 | 0001 |
| 数据位 |  7   |  6   |  5   |  4   |  3   |  2   |  1   | 
| 代  码 |  D4  |  D3  |  D2  |  p3  |  D1  |  p2  |  p1  | 
| 实际值 |  1   |  0   |  1   |      |  0   |      |      | 

剩下的位置放置原数据

3.求出校验码的值

Note:二进制从0001开始,千万不要从0开始

| 二进制 | 0111 | 0110 | 0101 | 0100 | 0011 | 0010 | 0001 |
| 数据位 |  7   |  6   |  5   |  4   |  3   |  2   |  1   | 
| 代  码 |  D4  |  D3  |  D2  |  p3  |  D1  |  p2  |  p1  | 
| 实际值 |  1   |  0   |  1   |      |  0   |      |      | 

以p1为例,p1二进制位末位是  1
找所有二进制位位  1  的校验位 p1,D1,D2,D4  ==(?,011)
令所有要校验的位 异或 = 0: p1,D1,D2,D4 相互异或 (同01)  得到p1 = 0

同理求出剩余
p2 找第二位是 1
p3 找第三位是 1
| 二进制 | 0111 | 0110 | 0101 | 0100 | 0011 | 0010 | 0001 |
| 数据位 |  7   |  6   |  5   |  4   |  3   |  2   |  1   | 
| 代  码 |  D4  |  D3  |  D2  |  p3  |  D1  |  p2  |  p1  | 
| 实际值 |  1   |  0   |  1   |  0   |  0   |  1   |  0   |

4.检错并纠错

| 二进制 | 0111 | 0110 | 0101 | 0100 | 0011 | 0010 | 0001 |
| 数据位 |  7   |  6   |  5   |  4   |  3   |  2   |  1   | 
| 代  码 |  D4  |  D3  |  D2  |  p3  |  D1  |  p2  |  p1  | 
| 实际值 |  1   |  0   | 1->0 |  0   |  0   |  1   |  0   |

假设D21变成了0 
接收端做第三步的逆操作
令所有要检验的位异或运算
p1 = (0001) = 1
p2 = 0
p3 = 1
可以看出出错的是第 三 位和第 一 位是 1 的数 也就是 D2 出错了 将D2改正
  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值