海明码校验【简单详细】

2023-10-27

海明码

1.什么是海明码:

一个名叫Richard Hanming老爷爷在1950年提出的检验纠错方法,它具有一位纠错能力。

2.海明码的计算方法:

设欲检测的二进制代码为n位,K检测位(提供纠错),总共n+k位代码

当中检测位满足的关系: 2 k 2^{k} 2k>=(n+k+1) ===此关系也是求不同代码长度n所需要检测位的位数k

1.海明码的编码规则

k检验位Pk,Pk-1...P1,

n数据位Dn-1,Dn-2,....D1,D0对应的海明码Hn+k,Hn+k+1,....H1

那么检验位海明码的位置对应关系:

(1)Pi在海明码的第 2 i − 1 2^{i-1} 2i1位置,比如P2, 2 2 − 1 2^{2-1} 221则海明码的位置为 H 2 H_{_2} H2

(2)注意:海明码的任何一位都是由若干个校验位来校验的

其中的对应关系:

被校验的海明码下标等于所有参与检验该位检验位下标之和

校验位由自己本身校验

Eg: H 12 H_{12} H12,他的下标为12,对应的是8+4(上面的公式求解,要对应二进制)也就是海明码的第8和第4检验位

实际应用举例:

对于8位的数据位,进行海明码校验需要4个校验位( 2 k 2^k 2k>=n+k+1, 2 4 2^4 24>=8+4+1)

数据位为: D 7 D_7 D7 D 6 D_6 D6 D 5 D_5 D5 D 4 D_4 D4 D 3 D_3 D3 D 2 D_2 D2 D 1 D_1 D1 D 0 D_0 D0

校验位为: P 4 P_4 P4 P 3 P_3 P3 P 2 P_2 P2 P 1 P_1 P1 P 4 P_4 P4

​ 形成的海明码: H 12 H_{12} H12 H 12 H_{12} H12 H 11 H_{11} H11 H 10 H_{10} H10 H 1 H_{1} H1

具体过程:

(1)确定DP在海明码中的位置

H 12 H_{12} H12 H 11 H_{11} H11 H 10 H_{10} H10 H 9 H_{9} H9 H 8 H_{8} H8 H 7 H_{7} H7 H 6 H_{6} H6 H 5 H_{5} H5 H 4 H_{4} H4 H 3 H_{3} H3 H 2 H_{2} H2 H 1 H_{1} H1
D 7 D_7 D7 D 6 D_6 D6 D 5 D_5 D5 D 4 D_4 D4 P 4 P_{4} P4 D 3 D_{3} D3 D 2 D_{2} D2 D 1 D_{1} D1 P 3 P_{3} P3 D 0 D_{0} D0 P 2 P_{2} P2 P 1 P_{1} P1

注意:当中的 H 8 H_{8} H8, H 3 H_{3} H3

(2)计算检验位

第一个检验位 P 1 P_{1} P1是位于 H 1 H_{1} H1的位置,他检验的位置为 H 1 H_{1} H1, H 3 H_{3} H3, H 5 H_{5} H5, H 7 H_{7} H7, H 9 H_{9} H9, H 11 H_{11} H11 就是读一位,隔一位

第二个检验位 P 2 P_{2} P2是位于 H 2 H_{2} H2的位置,他检验的位置为 H 2 H_{2} H2, H 3 H_{3} H3, H 6 H_{6} H6, H 7 H_{7} H7, H 10 H_{10} H10, H 11 H_{11} H11 就是读二位,隔2位

第三个检验位 P 3 P_{3} P3是位于 H 4 H_{4} H4的位置,他检验的位置为 H 4 H_{4} H4, H 5 H_{5} H5, H 6 H_{6} H6, H 7 H_{7} H7, H 9 H_{9} H9, H 12 H_{12} H12 就是读四位,隔四位

第四个检验位 P 4 P_{4} P4是位于 H 8 H_{8} H8的位置,他检验的位置为 H 8 H_{8} H8, H 9 H_{9} H9, H 10 H_{10} H10, H 11 H_{11} H11, H 12 H_{12} H12 就是读8位,隔8位

以此类推,

​ 第n位的校验位的海明位是:从自身开始, 2 n − 1 2^{n-1} 2n1位,隔 2 n − 1 2^{n-1} 2n1…直到结束

(3)对校验位对应的数据进行异或运算

一般默认为偶校验,可以求出每个校验位负责检测的海明位—采用奇校验,将各校验位的偶校验值取反即可

$$
&P1=D0⊕D1⊕D3⊕D4⊕D6 \
&P2=D0⊕D2⊕D3⊕D5⊕D6 \
&P3=D1⊕D2⊕D3⊕D7 \
&P4=D4⊕D5⊕D6⊕D7 \

$$

(4)校验错误

对使用海明码的数据进行校验差错检测很简单,
    根据上面的方法,我们可以很轻易得知每个校验位负责检测的海明位,
    只要对其进行异或运算即可。

$$

&G4=P4⊕D4⊕D5⊕D6⊕D7\
&G3=P3=D1⊕D2⊕D3⊕D7 \
&G2=D2⊕D2⊕D3⊕D5⊕D6 \
&G1=D1⊕D1⊕D3⊕D4⊕D6 \end
$$

(5)判定

1.正常情况:

若采用偶校验,则G4G3G2G1全为0是表示数据没有错误

奇校验应全为1,否则即出现了错误。

2.错误情况

当发生错误时,将G4G3G2G1的值转化为十进制即可知道发生错误的位置

​ 如G4G3G2G1=0110,即表示H6这个位置的数据发生了错误,只要将其取反即可纠正。

完结

参考链接:海明码(汉明码)详解
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

海明码校验【简单详细】 的相关文章

  • 如何将vscode设置成中文字体

    场景 最近不知道怎么的 vscode总是会自动跳回英文字体 明明已经下载过中文的字体了 解决方案 快捷键
  • PID调参过程详解(包括增量式和位移式)

    转载于https blog csdn net wangweijundeqq article details 76389770 位置闭环控制就是根据编码器的脉冲累加测量电机的位置信息 并与目标预设值做比较 得到控制偏差 然后通过对偏差的P比例
  • 容器查看与删除

    lcc lcc docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ad424be7a46b mysql docker entrypoint s About an
  • 部分手机拍照屏幕旋转, 导致imageview不能显示的问题???

    在项目开发的过程中 碰见了一个非常诡异的事情 拍照之后的imageview不能正常显示图片 从而导致十行代码中间的几句代码不执行 不执行 不执行 代码中包括imageview setImageBitmap bitmap 一度认为这个bitm
  • Leetcode_146. LRU 缓存

    C语言纯暴力解法 能AC我没想到 typedef struct int key int val int time LRUCache int g cap 全局变量记录缓存容量 int g time 利用全局变量更新put和get操作时关键值的

随机推荐

  • 常见的服务器部署SSL证书的安装方法介绍

    很多网络管理员对于SSL证书安装还是处于一个比较懵懂的状态 不同的服务器部署SSL证书方法也不一样 但是步骤确是类似的 生成证书请求文件 CRS 向CA机构申请SSL证书 下载证书 然后根据不同的系统安装部署SSL证书 最后测试证书 下面根
  • Windows下 flex + bison 小例子

    下载flex和bison 网址是http gnuwin32 sourceforge net packages flex htm 和http gnuwin32 sourceforge net packages bison htm 如果这两个链
  • MySQL数据库的安装、创建库、创建表、向数据库添加测试数据及连接取数、遍历输出数据库查询结果ResultSet、使用“Class.forName(JDBC_DRIVER);”来注册加载驱动的原因

    MySQL数据库的安装 创建库 创建表 向数据库添加测试数据及连接取数 MySQL数据库简介 Java对于数据库常用操作的封装 安装MySQL数据库 下载MySQL安装包 Linux MySQL在ubuntu Linux下的多版本选择 DE
  • linux学习笔记7(PHP安装)

    49 安装PHP PHP PHP Hypertext Preprocessor 即 超文本预处理器 是在服务器端执行的脚本语言 尤其适用于Web开发并可嵌入HTML中 PHP语法学习了C语言 吸纳Java和Perl多个语言的特色发展出自己的
  • kettle使用常见问题解决-01

    kettle常见问题解决 1 kettle界面connect消失 第一步 检查IE浏览器 不能低于10 第二步 在数据资源仓库的database里描述写中文 导致repositories xml出现乱码 解决方法 1 找到 kettle目录
  • ant design pro 一个页面两个表单,提交会相互影响,需将表单写为自定义组件

    描述 在页面 组件 中 只能有一个 Form create 意味着this props form唯一 如果一个页面有两个表单 提交其中一个 另一个也会提交 然而你只想提交一个 解决方法 1 如果表单多且复杂 请单独自定义一个页面 组件 我这
  • 了解Hadoop输入输出系统

    与任何I O子系统不同 Hadoop还带有一组原语 这些原始的考虑因素虽然本质上是通用的 但与Hadoop IO系统一起也具有一些特殊的含义 Hadoop处理数TB的数据集 对这些原语的特殊考虑将使你了解Hadoop如何处理数据输入和输出
  • 华为、腾讯、阿里、网易员工下班时间大曝光,靠加班,你是赢不了他们的

    这年头 不加班都不好意思说自己是上班族的 但有一种行业的疯狂加班程度 已经逐渐成为加班领域的一颗新星 那就是 互联网行业从事者 也许你对华为 阿里的加班水平早有耳闻 但你是否见过他们疯狂加班的样子呢 首先出场的阿里巴巴 19 55 00 0
  • 生成10个随机数保存于数组中,并找出其最大值和最小值

    上代码吧 bin bash 生成19个随机数保存于数组中 并找出其最大值和最小值 declare a rand declare i max min for i in 0 9 do rand i RANDOM echo rand i if i
  • CTFHUB-WEB

    HTTP协议 题目 请求方式 思路一 我们知道http请求方式中没有CTFB方式 就想到CTFHUB 使用BP抓包 将原来的数据包请求方式GET改成CTFHUB 点击Forward 放包 得到flag 积累 HTTP协议的八种请求方式 1
  • 典型案例 3:十分钟搭建弹性可扩展的 Web API

    作者 萧起 阿里云云原生团队 导读 本节课程主要分为三个部分 基本概念中介绍基于函数计算的 WebAPI 与普通的 WebAPI 的区别及优势 开发流程中介绍如何在函数计算的控制台进行 WebAPI 的开发 操作演示中会实例演示函数计算 W
  • mysql-索引_MySQL-索引

    mysql 索引 MySQL 索引 MySQL INDEXES A database index is a data structure that improves the speed of operations in a table In
  • 基于MATLAB的图像复原视图分析技术

    基于MATLAB的图像复原视图分析技术 摘要 图像质量的好与坏受很多方面因素的影响 其中运动模糊以及失真是较为主要的因素 这些因素贯穿在图像获取 传输以及储存的全过程中 本次设计用到的是MATLAB软件然后进行仿真 对模糊图像建立退化模型
  • Spring系列文章:Spring事务

    一 事务简述 1 什么是事务 Transaction tx 在 个业务流程当中 通常需要多条DML insert delete update 语句共同联合才能完成 这 多条DML语句必须同时成功 或者同时失败 这样才能保证数据的安全 多条D
  • 单机redis和redisCluster集群获取所有key

    对于单机redis keys 对于redis cluster集群 redis cli c a CLUSTER AUTH cluster call CLUSTER IP CLUSTER POPRT keys 如 redis cli c clu
  • L1正则和L2正则的比较分析详解

    感受 上次有个面试官问我l1正则和l2正则有什么区别 当时把我给问傻了 于是就回来找了资料写了这篇博客 我参照的是英文博客 吸取别人的长处 希望能帮助大家 如有错误或者需要补充的 欢迎指正 咱们共同进步 范数 norm 数学上 范数是一个向
  • actuator--基础--6.2--端点解析--metrics端点

    actuator 基础 6 2 端点解析 metrics端点 代码位置 https gitee com DanShenGuiZu learnDemo tree master actuator learn actuator01 1 介绍 用于
  • Ubuntu更改默认python版本的两种方法 python-> Anaconda

    当你安装 Debian Linux 时 安装过程有可能同时为你提供多个可用的 Python 版本 因此系统中会存在多个 Python 的可执行二进制文件 你可以按照以下方法使用 ls 命令来查看你的系统中都有那些 Python 的二进制文件
  • 谷歌首页被360篡改

    打开浏览器后 右上角设置找到跳转到360的地址将其删除
  • 海明码校验【简单详细】

    海明码 1 什么是海明码 一个名叫Richard Hanming老爷爷在1950年提出的检验纠错方法 它具有一位纠错能力 2 海明码的计算方法 设欲检测的二进制代码为n位 K为检测位 提供纠错 总共n k位代码 当中检测位满足的关系 2 k