首页 > 其他分享 >海明码检错纠错

海明码检错纠错

时间:2023-10-13 22:33:50浏览次数:42  
标签:校验位 码距 纠错 明码 校验 奇偶校验 出错 检错 位错

海明码

  1. 校验位个数计算
    k为校验个数,n为数据位个数
    2^k>=n+k+1
    解释:海明码至少要能检验出n+k个1位出错情况,和不出错的情况,共n+k+1种,而k位能检测出2^k种错误,所以校验位个数k要满足2^k>=n+k+1

  2. 校验位位置
    校验位在2^n位置

    H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16
    P1 P2 D1 P3 D2 D3 D4 P4 D5 D6 D7 D8 D9 D10 D11 P5
    P1 y y y y y y y y
    P2 y y y y y y y y
    P3 y y y y y y y y
    P4 y y y y y y y y
  3. 校验位计算
    每个校验位用于校验一组数据位,校验位的值为索引对应位为1的所有位的异或值
    例如:P1校验位用于校验索引最低位为1的所有位,即H1、H3、H5、H7、H9、H11、H13、H15,计为一个校验组,需要让校验组的所有位满足奇校验或者偶校验
    对于偶校验来说,校验位为其他数据位的异或值。

  4. 检错
    对于每个校验组,判断所有位是不是满足奇偶校验即可,不满足的校验组里就某些位置纠存在错误。

  5. 纠错
    对每个不满足奇偶校验的校验组求交集,可以得到出错的位,然后将出错的位取反即可。
    出错的位置索引可以这样计算:遍历每个校验组,如果不满足奇偶校验则索引对应位为1,否则为0。对于偶校验来说,索引每一位即对应校验组的异或值。
    例如:P1校验组不满足奇偶校验,P2校验组满足奇偶校验,P3校验组不满足奇偶校验,P4校验组满足奇偶校验,P5校验组不满足奇偶校验,则出错的位置索引为:0101,即H5出错。

  6. 检错纠错能力
    海明码具有1位比特的纠错能力和2位比特的检错能力。
    检1位错和纠1位错上面已经证明了,下面说明可以检2位错,即任意两位出错都能被检测到:对于任意两个错误位置x,y,那么x和y的二进制表示中必然存在一位不同,假设为第i位,那么第i位的校验位必然不满足奇偶校验,所以可以检测到。但是并不能纠错,因为不知道是1位错还是2位错(可能会导致同样的结果)。

  7. 码距相关
    码距和纠错能力的关系

    • 码距 >= e+1,可以检测e位错(因为任意错误码都得不到合法码字)
    • 码距 >= 2t+1,可以纠正t位错(因为可以通过码距最小的码字修复)
    • 码距 >= e+t+1,e>t,可以检测e位错,纠正t位错

    可以看出海明码码距为3

标签:校验位,码距,纠错,明码,校验,奇偶校验,出错,检错,位错
From: https://www.cnblogs.com/wangerblog/p/17763412.html

相关文章

  • 软件设计师学习-海明码
    wiki海明码(HammingCode)是由贝尔实验室的RichardHamming设计的,是一种利用奇偶校验来检错和纠错的校验方法。方法是在数据位插入k个校验位,通过扩大码距来实现检错和纠错。1.理论构成设数据位有n位置,校验位有k位,则n与k需要满足关系:2k-1≥n+k。按照如下规则......
  • [C语言]动态内存分配遇上函数-经典错误纠错
    题目来自nice2016校招笔试题直接完整代码#include<stdio.h>#include<stdlib.h>#include<string.h>voidGetMemory(char*p)//申请内存{ p=(char*)malloc(100);}voidTest(){ char*str=NULL; GetMemory(str); strcpy(str,"helloworld")......
  • [自然语言处理] 基于pycorrector实现文本纠错
    文本纠错(TextErrorCorrection)技术旨在自动修正输入文本中的拼写、语法、标点符号等错误,以提高文本的准确性、通顺性和规范性。该技术可以通过自然语言处理技术实现,基于上下文和语言规则对文本进行分析和推断,发现其中的错误,并给出正确的替换或修改建议。pycorrector是一个开源中文......
  • [自然语言处理] 基于pycorrector实现文本纠错
    文本纠错(TextErrorCorrection)技术旨在自动修正输入文本中的拼写、语法、标点符号等错误,以提高文本的准确性、通顺性和规范性。该技术可以通过自然语言处理技术实现,基于上下文和语言规则对文本进行分析和推断,发现其中的错误,并给出正确的替换或修改建议。pycorrector是一个开源中......
  • 习题纠错09
    使用重载函数编程序的目的是()//AA使用相同的函数名调用功能相似的函数B共享程序代码C提高程序的运行速度D节省存储空间//函数重载的主要目的是让程序员能够使用相同的函数名来编写具有不同参数列表的函数,//以实现功能相似但参数类型或数量不同的操作。这样可以提高代码的......
  • 习题纠错08
    静态页式管理可以实现虚存。//AA错B对//静态页式管理是在程序执行之前就将内存分配好了,但是虚拟内存需要的是动态分配,因此静态页式管理//不适合实现虚拟内存以下给定的情况中,可能不会引起指令流水线阻塞的是()//ACA跳转指令执行BTLB缺失C结果溢出Dcache缺失//A选项......
  • 海明码
    海明码海明码是最为常见的纠错码,实现原理就是加入校验位形成海明码。然后根据检验位检验错误、纠正错误。海明码分为五个步骤确定校验位的位数如果有n位的有效信息位数,k位的校验位的位数,则信息位n和校验位k需要满足\(n+k\leq2^k-1\)(这里只能检测一位错误,减去......
  • 习题纠错07
    CPU输出数据的速度远远超过打印机的打印速度,影响程序执行速度,为解决这一问题,可以采用()。//答案是DA通道技术B虚拟存储器C并行技术D缓冲技术//缓冲技术通过在CPU和打印机之间设置一个缓冲区来暂存数据。//当CPU产生数据时,它将数据发送到缓冲区,而不是直接发送到打印机。//......
  • 习题纠错06
    表达式"X=A+B(C-D)/E"的后缀表示形式可以是()//答案是CAXAB+CDE/-=BXA+BC-DE/=CXABCD-E/+=DXABCDE+/=//从左到右边遍历这个中缀表达式//X添加到后缀表达式,=入栈,A添加到后缀表达式中//+进入栈,B进入后缀表达式,和(入栈,C进入后缀表达式中//-进入栈,D进入后缀表达式,遇到),-和(出栈......
  • 习题纠错05
    以下哪些算法是可以用来求最小生成树()//答案是ADAkruskal算法Bdijkstra算法Cfloyd算法Dprim算法//1.Prim算法(适合稠密图,贪心算法的运用,时间复杂度O(n+e),邻接表存储;O(n^2),图)//2.Kruskal算法(适合稀疏图,贪心算法的运用,时间复杂度O(eloge),e为边数)//求图最短路径......