汉明校验·简明教程

汉明校验

一、简介

汉明码是由 Richard Hanming 于 1950 年提出的,它具有一位纠错能力。

新增的汉明码校验位数应满足如下关系: 2 k ⩾ n + k + 1 2^{k}\geqslant n+k+1 2kn+k+1,其中k为校验位位数,n位数据位数。

二、汉明码生成

  1. 确定校验位的个数与汉明码位数

    使用公式【 2 k ⩾ n + k + 1 2^{k}\geqslant n+k+1 2kn+k+1】计算需要的k,其中 k 是检验位的数量,n 是数据位的数量;

    举个逆子:原欲发送数据为:0101,此时我们可得n=4,则欲使 2 k ≥ 4 + k + 1 2^k\geq4+k+1 2k4+k+1,k最小为3,即校验位个数为3;则未来将要生成的汉明码位数为原数据4位+3位校验位共7位。

  2. 安置校验位

    我们规定:所有的校验位均放置在第 2 n 2^n 2n位,也就是第1、2、4、8…位置等都是校验位,n从0开始,到k-1结束。

    上例中k=3,则校验位的位置为:① 2 0 = 1 2^0=1 20=1;② 2 1 = 2 2^1=2 21=2;③ 2 2 2^2 22=4;即3位校验位放在最后要发送数据的第1,第2,第4个位置。

  3. 填充数据位:

    在非校验位的其他位置上填写真正的数据,填充后汉明码应如如下形式才对:

    c 1 c_1 c1 c 2 c_2 c20 c 3 c_3 c3101

    其中 c 1 c_1 c1 c 2 c_2 c2 c 3 c_3 c3为待确定值的校验位。

  4. 画表计算校验位的值

在这里插入图片描述

我们的原则是,位置代表的二进制写好后,每一行值为一的二进制位分为一组;然后,你会发现,每一行校验位的位置是互斥的,只有一个为1。

基于这样的发现,我们让汉明码那一行的未知数放在等式左边,其他已知的数值位放在等式右边进行异或(两个二进制位异或,相同结果为0,不同为1)运算,即可得到对应的校验位的值,如下计算所示:
C 1 = 0 ⊕ 1 ⊕ 1 = 0 C 2 = 0 ⊕ 0 ⊕ 1 = 1 C 3 = 1 ⊕ 0 ⊕ 1 = 0 C_1=0\oplus1\oplus1=0\\ C_2=0\oplus0\oplus1=1\\ C_3=1\oplus0\oplus1=0 C1=011=0C2=001=1C3=101=0

  1. 书写完整的汉明码

    如第四步所计算,结合原来的位置,将校验位的值填充进行,写出完整的汉明码,上例的汉明码为

    0100101

三、汉明码校验

假设我们收到了0110101,已知这是一个传输出错的汉明码

  1. 提取校验位

    0110101总位数为1,则易推得校验位为3位;再根据校验位的插入规则,我们可得到三位校验码分别在第1,2,4位,则可得校验码为010

  2. 校验

    我们按照生成校验码时的规则,将原来的分组的各组与其对应的校验码进行异或运算,若为0则表示该位没出错,否则表示出错。

    上述汉明码,我们进行如下计算:
    p 1 = 0 ⊕ 1 ⊕ 1 ⊕ 1 = 1 p 2 = 1 ⊕ 1 ⊕ 0 ⊕ 1 = 1 p 3 = 0 ⊕ 1 ⊕ 0 ⊕ 1 = 0 p1=0\oplus1\oplus1\oplus1=1\\ p2=1\oplus1\oplus0\oplus1=1\\ p3=0\oplus1\oplus0\oplus1=0 p1=0111=1p2=1101=1p3=0101=0
    欸,汉明码只能纠错1位,那到底是哪一位出错了呢?其实呀,这里并不能只管看出来,但是汉明码的神奇之处就在于,校验后的k位数值的二进制逆序组合转化为十进制表示的数值就是出错的位置。

    如上例,计算完得到 p 1 p 2 p 3 p_1p_2p_3 p1p2p3=110,我们逆序得到 p 3 p 2 p 1 p_3p_2p_1 p3p2p1=011,其十进制表示3,那么就是第三位出错了,瞅瞅是不是😁

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

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

相关文章

Python学习从0到1 day18 Python可视化基础综合案例 3.动态柱状图

夜色难免黑凉,前行必有曙光。 —— 24.3.25 目录: 01.基础柱状图 02.基础时间线柱状图 03.GDP动态柱状图绘制 一、基础柱状图构建 掌握构建一个基础的柱状图并能够反转x和y轴 1.通过Bar功能构建基础柱状图 基础柱状图的开发 # 导包 Bar包,生…

吴恩达2022机器学习专项课程(一) 第一周课程实验:成本函数(Lab_04)

问题预览 1.实验目的是什么? 2.一元线性回归的一元是什么意思? 3.如何实现一元线性回归的成本函数? 4.b确定,w和成本函数走势的关系是? 5.w,b和等高线图的关系是? 6.什么情况下,可以…

javaWeb个人日记(博客)管理系统

一、简介 在快节奏的生活中,记录生活点滴、感悟和思考是一种重要的方式。基于此,我设计了一个基于JavaWeb的个人日记本系统,旨在帮助用户轻松记录并管理自己的日记。该系统包括登录、首页、日记列表、写日记、日记分类管理和个人中心等功能&…

动态多态的注意事项

大家好: 衷心希望各位点赞。 您的问题请留在评论区,我会及时回答。 多态的基本概念 多态是C面向对象三大特性之一(多态、继承、封装) 多态分为两类: 静态多态:函数重载和运算符重载属于静态多态&#x…

深入了解 Linux 中的 MTD 设备:/dev/mtd* 与 /dev/mtdblock*

目录 前言一、什么是MTD子系统?二、 /dev/mtd* 设备文件用途注意事项 三、/dev/mtdblock* 设备文件用途注意事项 三、这两种设备文件的关系四、关norflash的一些小知识 前言 在嵌入式Linux系统的世界里,非易失性存储技术扮演着至关重要的角色。MTD&#…

Spring Aop 源码解析(下)

ProxyFactory选择cglib或jdk动态代理原理 ProxyFactory在生成代理对象之前需要决定到底是使用JDK动态代理还是CGLIB技术: config就是ProxyFactory对象,把自己传进来了,因为ProxyFactory继承了很多类,其中一个父类就是ProxyConfig // config就是ProxyFactory对象// 是不是…

第十二届蓝桥杯物联网试题(省赛)

思路: 这个考了一个RTC的配置,RTC我只配过一次,所以有些生疏,还是不能大意,一些偏僻的考点还是要多练,在获取RTC时间的时候也遇到一些bug,这个后续会用一篇博客将最近遇到的BUG都总结一下 主要的难点还是…

基于GA优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1卷积神经网络(CNN)在时间序列中的应用 4.2 长短时记忆网络(LSTM)处理序列依赖关系 4.3 注意力机制(Attention) 5…

Android15功能和 API 概览

Android 15 面向开发者引入了一些出色的新功能和 API。以下部分总结了这些功能,以帮助您开始使用相关 API。 如需查看新增、修改和移除的 API 的详细列表,请参阅 API 差异报告。如需详细了解新的 API,请访问 Android API 参考文档&#xff0…

C++零基础入门学习视频课程

教程介绍 本专题主要讲解C基础入门学习,所以不会涉及很深入的语法和机制。但会让你整体多面的了解和学习C的核心内容,快速学习使用C,我们的目标是先宏观整体把握,在深入各个击破! 学习地址 链接:https:/…

多线程合并练习题,线程安全(售票任务引入)--学习JavaEE的day30

day30 练习(day29) 注意代码注释,里面涉及代码实现遇到问题及解决方案,由于理解方便没有单独出来 1.计算任务 1.计算任务,一个包含了2万个整数的数组,分拆了多个线程来进行并行计算,最后汇总出…

MySQL三种开窗函数详细用法,图文详解

开窗函数的详细用法 第一章、开窗函数的语法1.1)从聚合开窗函数讲起1.2)开窗函数之取值1.3)排名开窗函数 第一章、开窗函数的语法 开窗函数的语法为:over(partition by 列名1 order by 列名2 ),括号中的两个关键词par…

加速新能源汽车产品迭代:融合前沿科技的重要性

新能源汽车新质生产力提升咨询方案 一、新能源汽车企业行业目前发展现状及特点: 1、快速增长 2、技术迭代快 3、竞争加剧 二、新能源汽车企业发展新质生产力面临的痛点: 1、技术创新压力巨大 2、市场竞争激烈 3、供应链稳定性欠缺 4、成本控制压…

微信小程序实战:无痛集成腾讯地图服务

在移动互联网时代,地图服务无疑是应用程序中最常见也最实用的功能之一。无论是导航定位、附近搜索还是路线规划,地图服务都能为用户提供极大的便利。在微信小程序开发中,我们可以轻松集成腾讯地图服务,为小程序赋能增值体验。本文将详细介绍如何在微信小程序中集成使用腾讯地图…

jmeter中参数加密

加密接口常用的方式有: MD5,SHA,HmacSHA RSA AES,DES,Base64 压测中有些参数需要进行加密,加密方式已接口文档为主。 MD5加密 比如MD5加密的接口文档: 请求URL:http://101.34.221…

面试算法-105-相交链表

题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回…

各大pdf转word软件都用的哪家的ocr引擎?

国内一般的PDF软件一般都调用某国际PDF原厂的OCR接口,但这家公司是主要做PDF,在OCR方面并不专注,一些不是很复杂的场景还能应付得过来,复杂一点的效果就强差人意了,推荐用金鸣表格文字识别系统,它主要有以下…

抖音视频关键词无水印下载软件|手机网页视频批量提取工具

全新视频关键词无水印下载软件,助您快速获取所需视频! 随着时代的发展,视频内容已成为人们获取信息和娱乐的重要途径。为了方便用户获取所需视频,推出了一款功能强大的视频关键词无水印下载软件。该软件主要功能包括关键词批量提取…

yolov8直接调用zed相机实现三维测距(python)

yolov8直接调用zed相机实现三维测距(python) 1. 相关配置2. 相关代码3. 实验结果 相关链接 此项目直接调用zed相机实现三维测距,无需标定,相关内容如下: 1.yolov5直接调用zed相机实现三维测距(python&#…

ISAC代码仿真学习笔记

文章目录 A. MIMO Communication ModelB. MIMO Radar Model III. Joint Waveform and Phase Shift Matrix Design for Given Radar BeampatternA. Problem FormulationB. Proposed Algorithm V. S IMULATION RESULTS A. MIMO Communication Model 用户处的接收信号矩阵由 Y …