海明码(海明不等式、数据位、校验位)

1 概述

1.1 介绍

  • 海明码:或称 海明校验码,是 Richard Hamming 在 1950 年提出,还被广泛采用的一种很有效的校验方法

1.2 约定原则

  • 海明码只能检测出 2 位错,纠 1 位错
  • 海明码默认进行 偶校验
  • 海明码是一串由 0 和 1 组成的序列

2 常用概念

2.1 海明距离

  • 定义:一个码字要变成另一个码字时必须要改变的最小位数
  • 理解:不同位的个数,举例如下
    • 0101 => 0100:不同位的个数为 1 位,故海明距离是 1
    • 0101 => 0000:不同位的个数为 2 位,故海明距离是 2

2.2 海明不等式

  • 公式: 2 k ≥ m + k + 1 2^k \geq m + k + 1 2km+k+1
    • k:校验位 的个数
    • m:数据位 的个数

2.3 编码方式:校验位 + 数据位

  • ① 校验位 和 数据位 的 确定规则:第 2 i 2^i 2i(i = 0, 1, 2, 3…) 位是 校验位,其余是 数据位
  • ② 校验位 和 数据位 的 对应关系:每个 校验位,会校验参加该位置进行计算的 数据位(如下图)

勾选的部分 => 数值计算,如 12 = 4 + 8 = 2 2 + 2 3 12 = 4 + 8 = 2^2 + 2^3 12=4+8=22+23
 
勾选的部分 => 参加校验位的部分,如:
参加位置 1 校验的有:1、3、5、7、9、11,其中 1 是校验位,其他是数据位
参加位置 2 校验的有:2、3、6、7、10、11,其中 2 是校验位,其他是数据位
参加位置 4 校验的有:4、5、6、7、12,其中 4 是校验位,其他是数据位
参加位置 8 校验的有:8、9、10、11、12,其中 8 是校验位,其他是数据位

位置1= 2 0 2^0 202= 2 1 2^1 214= 2 2 2^2 228= 2 3 2^3 23
1
2
3
4
5
6
7
8
9
10
11
12
  • 举例:假设要传送的数据是 0100 1101,按 偶校验 进行计算
    • 根据题干 “0100 1101” 可知,数据位是 8 位(m=8)
    • 根据 “海明不等式” 可知,校验位最小是 4 位(k=4)
    • 根据 “校验位 和 数据位 的对应关系”,得到 “偶校验计算结果”,完成下表,如
      • 校验位 1 对应的数据位分别是:3、5、7、9、11 => 10101 => 校验位为 1
      • 校验位 2 对应的数据位分别是:3、6、7、10、11 => 11101 => 校验位为 0
      • 校验位 4 对应的数据位分别是:5、6、7、12 => 0110 => 校验位为 0
      • 校验位 8 对应的数据位分别是:9、10、11、12 => 0010 => 校验位为 1
位置121110987654321
校验位 2 3 2^3 23 2 2 2^2 22 2 1 2^1 21 2 0 2^0 20
数据位01001101
偶校验计算结果1001
海明码(最终结果)010011100101

3 扩展

3.1 奇偶校验

  • 原理:根据被传输的一组二进制代码的数位中 “1” 的个数奇数偶数 来进行校验
  • 实现:增加一位校验位,在数据位前、后都行,如下
校验 数据位 最终数据 说明
奇校验 1011 010 1011 0101 数据位有 4 个 1,那么校验位为 1,才能保证有奇数个 1
1011 011 1011 0110 数据位有 5 个 1,那么校验位为 0,才能保证有奇数个 1
偶校验 1011 010 1011 0100 数据位有 4 个1,那么校验位为 0,才能保证有偶数个 1
1011 011 1011 0111 数据位有 5 个1,那么校验位为 1,才能保证有偶数个 1

1 个字节 = 8 个数据位
当发送数据是:1011 0101,接受到的数据是:1011 0100 时,就会发现 1 的个数有 1 个不同,从而能检测到错误
注意:只能发现有 1 位错误,而且还不知道是哪位

  • 16
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼丸丶粗面

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值