1.汉明码实质及原理

汉明码实质上是多重奇偶校验,其实现原理是:在有效信息位中加入几个校验位形成汉明码,使码距比较均匀的拉大。具有检验并纠正一位错误的能力

2.核心公式介绍

2^k >= N+K+1

其中,K代表校验位的位数N代表信息位的位数

下面是 信息位N值与校验位K值的对应关系表(重要)

信息码位数(N) 1 2~4 5~11 12~26 27~57 58~120
校验码位数(M) 2 3 4 5 6 7

3.确定校验位的位置

根据上表确定校验码位数之后,将它插入到信息码中(这里信息码用D表示,校验码用P表示),规则是:

  • 校验码Pi 必须是在2的i-1次方位置,即只能放在H1,H2,H4,H8…
  • 这里指的位置都是从右向左排序(信息码和校验码都一样)

举个例子,现有一个4位信息码(D1,D2,D3,D4),它的排列是这样的:

D4 D3 D2 P3 D1 P2 P1

知道位置之后,下一步就是确定校验位的值了

4.确定校验位的值(核心)

我之前是卡在这一步了,我觉得大部分博客没有直观的将这部分相关的知识讲到位,都是含糊其辞,其实用对方法后,是很简单的,下面是确定校验位值的思路:

  • 根据校验位的位数,确定每个位置占用的校验位号
  • 根据参与校验的信息位的位置,确定信息位的值(异或计算)

下面通过一个例子介绍,现在有一个二进制编码1011(D1,D2,D3,D4),求它的汉明码

  • 首先确定校验位的位数及位置

    信息码共4位,校验码通过公式计算为3位,一共7位,排列如下

    D4 D3 D2 P3 D1 P2 P1

    它的校验位的对应表如下:

位置(从右至左) 占用的校验位号 备注
1 1 1=1
2 2 2=2
3 1,2 3=1+2
4 4 4=4
5 1,4 5=1+4
6 2,4 6=2+4
7 1,2,4 7=1+2+4
  • 确定校验位的值(敲黑板)

    确定各校验码 的参与校验位的信息位的位置,如下表

校验码名称(位置) 参与校验码的信息位的位置
P1 (位置为1) 1,3,5,7 (1出现过的位置)
P2 (位置为2) 2,3,6,7 (2出现过的位置)
P3 (位置为4) 4,5,6,7 (4出现过的位置)

现在就可以根据上表确定各校验位的值了(异或运算):

​ P1 = D1⊕D2⊕D4 = 1⊕0⊕1 = 0

​ P2 = D1⊕D3⊕D4 = 1⊕1⊕1 =1

​ P3 = D2⊕D3⊕D4 = 1⊕0⊕1 = 0

异或运算简单来说,就是两个相同的数结果为0,不同的数结果为1,这里看1的个数就成,偶数为0,奇数就是1

所以生成的海明码为

D4 D3 D2 P3 D1 P2 P1

1 1 0 0 1 1 0

5.汉明码纠正

假设传输中H6(D3)发生了错误,原码就变为:

1 0 0 0 1 1 0

检错过程很简单,将接收到的码字重新进行奇偶校验

S1 = P1⊕D1⊕D2⊕D4 = 0⊕1⊕0⊕1 = 0

S2 = P2⊕D1⊕D3⊕D4 = 1⊕1⊕0⊕1 = 1

S3 = P3⊕D2⊕D3⊕D4 = 0⊕0⊕0⊕1 = 1

所以真值为S3,S2,S1,即110,转换为十进制为6,即第六位发生了错误,纠正

1 1 0 0 1 1 0

汉明码原理解析(清晰实例讲解)相关推荐

  1. 断点续传的原理剖析与实例讲解

    断点续传的原理剖析与实例讲解 本文所要讲的是Android断点续传的内容,以实例的形式进行了详细介绍. 一.断点续传的原理 其实断点续传的原理很简单,就是在http的请求上和一般的下载有所不同而已. ...

  2. 粒子群算法Particle Swarm Optimization超详细解析+代码实例讲解

    01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于对鸟群捕食的行为研究 ...

  3. 编程易筋经:内存解析之实例讲解

    一.引言 作为一名优秀的编程人员我们不能会敲代码,我们还必须要懂得那些代码在计算机中是如何一步步执行的.只有这样我们才能写出经久不衰,经得起考验,更优秀的代码,开发出更好的软件.我们都知道任何代码的执 ...

  4. 「 数学模型 」“灰色预测GM(1,1)模型原理及Matlab实例”讲解

    一.前言 小白将使用的灰色预测模型的Matlab代码贴在下面,代码使用了灰色模型进行两次回归预测,缺点是精度不高,预测后的残差有点大. 灰色预测模型主要内容: GM(1,1)模型(1阶1个影响因素): ...

  5. 【智能算法】粒子群算法(Particle Swarm Optimization)超详细解析+入门代码实例讲解...

    喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由E ...

  6. java枚举类型原理_Java枚举类接口实例原理解析

    这篇文章主要介绍了Java枚举类接口实例原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 枚举类可以实现一个或多个接口.与普通类实现接口完全一 ...

  7. Linux下Desktop文件入门,解析Deepin Linux系统中的Desktop文件,附实例讲解

    以下内容为你解析 Deepin Linux 操作系统中的 Desktop Entry 文件,同时附上实例讲解. 概念 Desktop Entry 文件是 Linux 桌面系统中用于描述程序启动配置信息 ...

  8. Vue的路由实现原理解析(最清晰)

    Vue的路由实现原理解析(最清晰) 一般源码中,都会用到 window.history 和 location.hash history 实现 window.history 对象包含浏览器的历史,win ...

  9. 这是一份全面 清晰的架构设计指南:MVC、MVP MVVM模式(含实例讲解)

    前言 在Android开发中,当你梳理完需求后,你要做的并不是马上写下你的第一行代码,而是需先设计好整个项目的技术框架 今天,我将全面介绍Android开发中主流的技术框架MVC.MVP 与 MVVM ...

最新文章

  1. 编程小白的第一本python入门书-《编程小白的第一本Python入门书》读书笔记
  2. MIGO时没发料不允许入库
  3. Springboot整合swagger指南
  4. selenium自动加载Flash
  5. Java开发中JDBC连接数据库代码和步骤
  6. 2021牛客暑期多校训练营7 K-xay loves sequence(主席树+二分)
  7. matlab 按照某列以行为单位进行排序
  8. 基于RabbitMQ RPC实现的主机异步管理
  9. 手把手教你迁移微信小程序到 QQ 浏览器
  10. 黑鲨创建nt6引导出错_黑苹果神器,一键生成OpenCore EFI 文件
  11. 论文中常用的对word页眉页脚的操作
  12. HCI实验spss数据分析
  13. “我不是坚强,我只是走投无路”,从职高到杭电、浙大、麻省计算机博士!...
  14. 数据分析师前景怎样?为什么企业每年都会在数据分析技术上“砸钱”?
  15. 汽车不同的电源接通状态
  16. VOLTE关键技术:锚定、被叫域选择
  17. linux 流量 脚本,实时查看linux网卡流量脚本
  18. 漫游测试之性能测试(5.5-查询设计)
  19. dlink交换机(DLINK交换机灯)
  20. 东京奥运会:创意可以接地气,但别接“阴气”

热门文章

  1. 【2】MediaPipe面部识别
  2. 软件测试工程师是吃青春饭的吗?测试这个行业到底能干到多少岁?
  3. 南昌数学与计算机科学学院,关于南昌大学汪祥教授在线讲学的通知
  4. 华为商城卡片阴影效果
  5. 计算机学校要学籍吗,对普通高中学校学籍档案信息化管理相关问题的几点探讨...
  6. matplotlib不显示图片
  7. iphone 绘图 虚线的画法
  8. 小程序之wepy框架
  9. 学习笔记--肯德基餐厅信息查询
  10. 创建Dva项目的方法(dva-cli,umi)