海明码的计算和检错纠错

news2025/2/27 20:53:24

海明码

1.学习前提

学习海明码之前,我们要约定3个原则:

  1. 海明码只能检测出2位错,纠1位错(因此不要问如果3位错怎么办等幼稚问题)。
  2. 海明码默认进行偶校验(除非特殊说明使用奇校验)。
  3. 海明码是一串由0和1组成的序列(除01外没有其他的值,记住了!这是重点)

2.海明码的构成

海明码由信息位和校验位组成。

校验位:2的n次方的位置
信息位:不是2的n次方的位置

如下表所示:

H7H6H5H4H3H2H1海明码位置
X4X3X2X1信息位
P2P1P0校验位

3.求海明码例子

如:求信息1011的海明码?

1.算出校验位数k

​ 2^k >= k + 信息位数 + 1

​ 2^k >= k + 4 + 1 ======》k=3,即校验位3个

2.确定校验位在海明码中的位置

H7H6H5H4H3H2H1海明码位置
1011信息位
P2P1P0校验位

3.分组求校验码

我们需要确认H1,H2,H4这三个校验位都来校验哪些位置。

首先将下标1,2,4的二进制码写出来,并且最高位补到3位(前面算的k数)

如下所示:

124
001010100

然后我们将0替换为,作为通配表。*

124
**1* 1*1**

我们将1到7的二进制序列,列出来如下表

7654321
111110101100011010001

将校验位的1,2,4用信息位来匹配

124
**1* 1*1**
末尾都是1第二位是1最高位是1
011(3)011(3)101(5)
101(5)110(6)110(6)
111(7)111(7)111(7)

即:

H1所在位置的校验码,负责的是3,5,7信息位的校验;

H2所在位置的校验码,负责的是3,6,7信息位的校验;

H4所在位置的校验码,负责的是5,6,7信息位的校验;

4.使用偶校验来求校验码!!!!!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PfRQd2l9-1681734744148)(…/AppData/Roaming/Typora/typora-user-images/image-20230417192220923.png)]

得到H1=1,H2=0,H4=0

所以正确的完整的海明码为:

H7H6H5H4H3H2H1海明码位置
1101信息位
001校验位

4.查错

先了解下原理:

首先我们先画个圆。然后按如下形式做交叉
img

在每个相邻部位,我们做相加处理
img
变成了如下形式
img

当我们如果发现偶校验出错,
比方说在 1 3 7 5 这个区域出错。
img
如果这个位置出错了,那么一定是 1 3 7 5 这四个位置中的一个位置出错(如果俩位出错则无法纠错,这个点一定要记住)
如果此时其他的俩个组 即:2,3,6,7 和 4,5,6,7偶校验都通过了的话。
也就证明只可能是1出错
所以我们可以将 1 的位数 做修改。如果是0变为1,如果是1变为。来达到纠错的目的。

但是如果2,3,5,7这个位置也出错了,4,5,6,7这个位置没有出错。
我们很容易就推导出,是 3 这个位置出错了。

我们就可以修改3的值,如果是0变为1或者如果是1变为0.

在此时我们会发现一个巧妙的规则!当我们把

1,3,5,7 设为P1,
2,3,6,7设为P2
4,5,6,7设为P3

时当如果哪组校验失败就为1

P3P2P1出错(第几)位数
0011
0102
0113
1004
1015
1106
1117

刚好是对应的二进制编码。就是这么绝。

所以:

======================================================================

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bp6GvuVA-1681734744151)(…/AppData/Roaming/Typora/typora-user-images/image-20230417193747976.png)]

看题目给出的海明码到此分组时

H1,X3,X5,X7进行偶校验是0 还是1,其他组一样计算

然后根据三组的结果,任一组结果有1肯定就是错了,再根据结果的十进制知道是第几位出错了,取反就是纠错了。

5.纠错

查出错误位置后,直接0变1或者1变0就OK了

6.例2

44151)]

看题目给出的海明码到此分组时

H1,X3,X5,X7进行偶校验是0 还是1,其他组一样计算

然后根据三组的结果,任一组结果有1肯定就是错了,再根据结果的十进制知道是第几位出错了,取反就是纠错了。

5.纠错

查出错误位置后,直接0变1或者1变0就OK了

6.例2

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/426783.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ASEMI代理AD8606ACBZ-REEL7原装ADI车规级AD8606ACBZ-REEL7

编辑:ll ASEMI代理AD8606ACBZ-REEL7原装ADI车规级AD8606ACBZ-REEL7 型号:AD8606ACBZ-REEL7 品牌:ADI/亚德诺 封装:WLCSP-8 批号:2023 引脚数量:8 安装类型:表面贴装型 AD8606ACBZ-REEL7…

Serverless 冷启动:如何让函数计算更快更强?

问题背景 Serverless 计算也称服务器无感知计算或函数计算,是近年来一种新兴的云计算编程模式。其致力于大幅简化云业务开发流程,使得应用开发者从繁杂的服务器运维工作中解放出来(例如自动伸缩、日志和监控等)。借助 Serverless…

APT攻击及密码学

目录标题什么是APT攻击?APT攻击过程APT防御技术APT防御过程沙箱处理流程密码学什么是对称加密?什么是非对称加密?SSL工作过程什么是APT攻击? APT攻击即高级可持续威胁攻击,也称为定向威胁攻击,指某组织对特…

fastCGI快速上手

fastCGI OVERVIEWfastCGI一、CGI二、fastCGI三、fastCGI使用1.fastCGI和spawn-fcgi安装2.nginx fastcgi(1)nginx的数据转发(2)spawn-fcgi启动(3)fastCGI进程处理3.fastCGI总结四、其他1.fastCGI环境变量2.…

【图像分割】LabelMe基本使用/标注标签格式转换及可视化

前言 之前一直在做目标检测的相关内容,使用LabelImg标注检测数据轻车熟路。不过最近尝试探索一下图像分割场景,需要用到LabelMe标注用于分割的数据标签,本文进行过程记录。 图像分割数据标签示例 以道路分割为例,下图是deepglo…

基于MVC+SSH的文章发布系统源码数据库毕业论文

目 录 摘要 1 Abstract 2 1 绪论 1.1 课题背景 1.2 研究现状及发展趋势 1.3 课题意义与目的 1.4 研究内容 1.5 论文组织 2 开发工具和技术介绍 2.1 开发工具 2.1.1 Myeclipse简介 2.1.2 MySQL简介 2.1.3 Tomcat简介 2.2 开发技术 2.…

【LInux】MySQL高可用之主从复制

一、Mysql主从架构技术说明 Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到 多个系统上去,这种分布的机制,是通过将Mysql的某一台主机(Master)的数据复 制到其它主(slaves&…

音频模块的介绍

一、术语总结 1.HIFI 级   “HIFI”一词通常指高保真音频(High-Fidelity Audio),是指尽可能保持音频信号的原始质量,让听众感受到最真实的音乐表现。因此,“HIFI级”通常指具有高保真音频性能的产品或设备&#xff…

音视频开发十六:SDL基础概念

SDL 纹理渲染 纹理 ​ 在SDL中,纹理是图像的描述信息。用SDL_Texture表示一个纹理对象(texture),它是一个用于存储像素数据的结构体类型。 渲染 ​ **互联网解释:**渲染是在电脑绘图中是指用软件从模型生成图像的…

【Linux】线程互斥详解:多线程会有什么问题?什么是互斥锁?C++怎么封装使用互斥锁?

多线程可以提高程序的并发性和运行效率,充分利用计算机的多核资源. 前面的几篇文章已经介绍了, Linux线程的基本概念、基本控制等内容. 我们已经看到了多线程可以提升运行效率等. 但是, 也发现了问题, 多线程可能会导致输出混乱、访问共享资源混乱、竞争等问题. 输…

Vue中 import ...与import{ }、import from ‘@路径‘ 与 import from ‘../路径‘

遇到的问题: 不带{ }以组件方式 引入后,用 组件名. 变量 的方式一直提示变量未定义的问题,改成直接 带{ }引入变量直接使用变量就不提示错误了,(不知道是不是我引入的包和他人不一样的原因...)&#xff0…

至尊宝工具箱 - 电商运营选品必备工具下载安装详细教程

简介 至尊宝插件是一款电商网络浏览插件,能够帮助店主更好地运营自己的网店,这款插件功能十分全面强大,可以实现搜主图、快速商家商品、优化商品标题等,通过帮助店家增加曝光量来增效销售,感兴趣的朋友快来体验。 下…

使用Superlink控制物联网网关远程调试PLC示例(PLC/HMI调试工具)

目录 1.Superlink工具使用说明 1.1软件安装 1.2账号登录 1.3设备查看 1.4菜单栏使用 2. Superlink网关远程调试网口/串口设备示例 2.1 远程调试西门子网口1200 PLC示例 2.2 远程调试欧姆龙232 PLC实串口通讯示例 3. 常见使用问题及技术支持 3.1 Superlink工具使用问题…

Mybatis核心

文章目录前言一、Configuration二、MappedStatement三、SqlSession四、Executor五、StatementHandler六、ParameterHandler七、ResultSetHandler八、TypeHandler总结前言 SqlSession是MyBatis提供的面向用户的操作数据库API。那么MyBatis底层是如何工作的呢?为了解…

vue.js表情文本输入框组件

文章目录参考链接效果图代码emoji.jsonEmojiText.vue使用参考链接 JS操作文本域获取光标/指定位置插入 vue.js支持表情输入 ttkwsd博客 效果图 代码 不能换行的bug已处理… emoji.json 表情图片放在public的emoji文件夹下面 emoji.json放在src/components/EmojiText文件夹…

Linux 生成pem文件 用于免密登录

1.在远程机器生成.pem文件 生成密钥对: $ ssh-keygen -t rsa -b 2048 -v 直接确认下一步 查看生成的密钥对: $ ls ~/.ssh/ 将私钥重命名至id_rsa.pem: $ mv ~/.ssh/id_rsa ~/.ssh/id_rsa.pem 修改~/.ssh/目录权限: $ chmod …

力扣sql中等篇练习(三)

力扣sql中等篇练习(三) 1 树节点 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # not in匹配上了返回的值是1,casw when里面也是可以使用not in和子查询的 # 注意去重的时候需要筛选掉null值 SELECT id,case when p_id is null then Rootwhen (id …

暄桐好作业之《临王蒙〈具区林屋图〉》

告诉大家一个好消息“暄桐好作业”栏目上新啦~除了与大家分享正在进行的课程好作业,还会向大家展示来自暄桐学长学姐们的优秀国画作品。希望正在上课的暄桐同学们能够从学长学姐的分享以及暄桐教室专业助教的点评中,从中获益并获得力量,继续努…

Java基础(十七):日期时间API

Java基础系列文章 Java基础(一):语言概述 Java基础(二):原码、反码、补码及进制之间的运算 Java基础(三):数据类型与进制 Java基础(四):逻辑运算符和位运算符 Java基础(五):流程控制语句 Java基础(六)&#xff1…

chatGPT开发公司

OpenAI是chatGPT的开发公司,成立于2015年,总部位于美国旧金山。OpenAI致力于开发和推广人工智能技术,包括自然语言处理、视觉识别、机器学习等领域,旨在推动人工智能技术对全球社会和经济的影响和发展。 除了chatGPT之外&…