汉明码原理解析(清晰实例讲解)
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
汉明码原理解析(清晰实例讲解)相关推荐
- 断点续传的原理剖析与实例讲解
断点续传的原理剖析与实例讲解 本文所要讲的是Android断点续传的内容,以实例的形式进行了详细介绍. 一.断点续传的原理 其实断点续传的原理很简单,就是在http的请求上和一般的下载有所不同而已. ...
- 粒子群算法Particle Swarm Optimization超详细解析+代码实例讲解
01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于对鸟群捕食的行为研究 ...
- 编程易筋经:内存解析之实例讲解
一.引言 作为一名优秀的编程人员我们不能会敲代码,我们还必须要懂得那些代码在计算机中是如何一步步执行的.只有这样我们才能写出经久不衰,经得起考验,更优秀的代码,开发出更好的软件.我们都知道任何代码的执 ...
- 「 数学模型 」“灰色预测GM(1,1)模型原理及Matlab实例”讲解
一.前言 小白将使用的灰色预测模型的Matlab代码贴在下面,代码使用了灰色模型进行两次回归预测,缺点是精度不高,预测后的残差有点大. 灰色预测模型主要内容: GM(1,1)模型(1阶1个影响因素): ...
- 【智能算法】粒子群算法(Particle Swarm Optimization)超详细解析+入门代码实例讲解...
喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由E ...
- java枚举类型原理_Java枚举类接口实例原理解析
这篇文章主要介绍了Java枚举类接口实例原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 枚举类可以实现一个或多个接口.与普通类实现接口完全一 ...
- Linux下Desktop文件入门,解析Deepin Linux系统中的Desktop文件,附实例讲解
以下内容为你解析 Deepin Linux 操作系统中的 Desktop Entry 文件,同时附上实例讲解. 概念 Desktop Entry 文件是 Linux 桌面系统中用于描述程序启动配置信息 ...
- Vue的路由实现原理解析(最清晰)
Vue的路由实现原理解析(最清晰) 一般源码中,都会用到 window.history 和 location.hash history 实现 window.history 对象包含浏览器的历史,win ...
- 这是一份全面 清晰的架构设计指南:MVC、MVP MVVM模式(含实例讲解)
前言 在Android开发中,当你梳理完需求后,你要做的并不是马上写下你的第一行代码,而是需先设计好整个项目的技术框架 今天,我将全面介绍Android开发中主流的技术框架MVC.MVP 与 MVVM ...
最新文章
- 编程小白的第一本python入门书-《编程小白的第一本Python入门书》读书笔记
- MIGO时没发料不允许入库
- Springboot整合swagger指南
- selenium自动加载Flash
- Java开发中JDBC连接数据库代码和步骤
- 2021牛客暑期多校训练营7 K-xay loves sequence(主席树+二分)
- matlab 按照某列以行为单位进行排序
- 基于RabbitMQ RPC实现的主机异步管理
- 手把手教你迁移微信小程序到 QQ 浏览器
- 黑鲨创建nt6引导出错_黑苹果神器,一键生成OpenCore EFI 文件
- 论文中常用的对word页眉页脚的操作
- HCI实验spss数据分析
- “我不是坚强,我只是走投无路”,从职高到杭电、浙大、麻省计算机博士!...
- 数据分析师前景怎样?为什么企业每年都会在数据分析技术上“砸钱”?
- 汽车不同的电源接通状态
- VOLTE关键技术:锚定、被叫域选择
- linux 流量 脚本,实时查看linux网卡流量脚本
- 漫游测试之性能测试(5.5-查询设计)
- dlink交换机(DLINK交换机灯)
- 东京奥运会:创意可以接地气,但别接“阴气”