在海明码中, 位号数(1、2、3、……、n)为2的权值的那些位,即:

1(2^0)、2(2^1)、4(2^2)、8(2^3)、…2^(r-1)位,作为奇偶校验位,并记作: P1、P2、P3 、P4、…Pr,余下各位则为有效信息位。

例如: N=11(海明码位数)K=7(数据位数)r=4(校验位) ,相应海明码可表示位号为: 1, 2, 3, 4 ,5 ,6, 7, 8, 9 ,10 ,11,校验位P占第1,2,4,8位,其他位为有效信息位,海明码中的校验位分别标示为P1,P2,P3,P4… Pr ,并被信息位中的一至若干位所校验,其规律是:第i位,由校验位位号之和等于i的那些校验位所校验,

如:海明码的位号为3,它被P1P2(位号分别为1,2)所校验,海明码的位号为5,它被P1P3(位号分别为1,4)所校验。

归并起来: 形成了4个小组,每个小组一个校验位,校验位的取值,仍采用奇偶校验方式确定。

设计海明码编码的关键技术,是合理地把每个数据位分配到r个校验组中,以确保能发现码字中任何一位出错;若要实现纠错,还要求能指出是哪一位出错,对出错位求反则得到该位的正确值。

例如,当数据位为3位(用D3 D2 D1表示)时,检验位应为4位(用P4 P3 P2 P1表示)。可通过表2。3表示的关系,完成把每个数据位划分在形成不同校验位的偶校验值的逻辑表达式中。

表2。

3 校验位与数据位的对应关系:

在P1、P2、P3、P4竖列相应行分别填1,

在该4列的低3横行其它位置分别填0,

在最顶横行的每个尚空位置都分别填1。

若只看第3横行,右4竖列的3个bit的组合值分别为十进制的1、2、4、0,则分配 D1 D2 D3列的组合值为3 5 6,保证低3横行各竖列的编码值各不相同。

表中D3 D2 D1为三位数据位,P4 P3 P2 P1为四位校验位。

其中低三位中的每一个校验位P3 P2 P1的值,都是用三个数据位中不同的几位通过偶校验运算规则计算出来的。其对应关系是:对Pi(i的取值为1~3),总是用处在Pi取值为1的行中的、用1标记出来的数据位计算该Pi的值。

最高一个校验位P4,被称为总校验位,它的值,是通过对全部三个数据位和其它全部校验位(不含P4本身)执行偶校验计算求得的。

形成各校验位的值的过程叫做编码,按刚说明的规则,4个校验位所用的编码方程为:

P4 = D3 D2 D1 P3 P2 P1

P3 = D3 D2

P2 = D3 D1

P1 = D2 D1

由多个数据位和多个校验位组成的一个码字,将作为一个数据单位处理,例如被写入内存或被传送走。

之后,在执行内存读操作或在数据接收端,则可以对得到的码字,通过偶校验来检查其合法性,通常称该操作过程为译码,所用的译码方程为:

S4 = P4 D3 D2 D1 P3 P2 P1

S3 = P3 D3 D2

S2 = P2 D3 D1

S1 = P1 D2 D1

相关信息拓展如下:

1、诞生:

海明校验码是由Richard Hamming于1950年提出、目前还被广泛采用的一种很有效的校验方法,是只要增加少数几个校验位,就能检测出二位同时出错、亦能检测出一位出错并能自动恢复该出错位的正确值的有效手段,后者被称为自动纠错。

它的实现原理,是在k个数据位之外加上r个校验位,从而形成一个k r位的新的码字,使新的码字的码距比较均匀地拉大。把数据的每一个二进制位分配在几个不同的偶校验位的组合中,当某一位出错后,就会引起相关的几个校验位的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为进一步自动纠错提供了依据。

2、基本信息:

中文名称

海明校验码

提出人

Richard Hamming

时间

1950年

类型

奇偶测试

3、基本思想:

将有效信息按某种规律分成若干组,每组安排一个校验位,做奇偶测试,就能提供多位检错信息,以指出最大可能是哪位出错,从而将其纠正。

实质上,海明校验是一种多重校验。

4、特点:

它不仅具有检测错误的能力,同时还具有给出错误所在准确位置的能力 但是因为这种海明校验的方法只能检测和纠正一位出错的情况。

所以如果有多个错误,就不能查出了。

假设为k个数据位设置r个校验位,则校验位能表示2^r个状态,可用其中的一个状态指出 "没有发生错误",用其余的2 ^r -1个状态指出有错误发生在某一位,包括k个数据位和r个校验位,因此校验位的位数应满足如下关系:

2^r ≥ k r 1 (2。

7)

如要能检出与自动校正一位错,并能同时发现哪位错,此时校验位的位数r和数据位的位数k应满足下述关系:

2^r-1 ≥ k r (2。8)

按上述不等式,可计算出数据位k与校验位r的对应关系,如表2。

2所示。

表2。2

k值        最小r值

1                 2

2~4             3

5~11           4

12~26         5

27~57         6

58~120       7

5、对应关系:

译码方程和编码方程的对应关系很简单。

译码方程,是用一个校验码和形成这个校验码的编码方程执行异或,实际上是又一次执行偶校验运算。通过检查四个S的结果,可以实现检错纠错的的目的。

实际情况是,当译码求出来的S4、S3、S2、S1的得值与表2。

3中的那一列的值相同,就说明是哪一位出错;故人们又称表2。3为出错模式表。若出错的是数据位,对其求反则实现纠错;若出错的是校验位则不必理睬。举例如下:

任何一位(含数据位、校验位)均不错,则四个S都应为0值;

任何单独一位数据位出错,四个S中会有三个为1;如D3错,则S4 S3 S2 S1为1110。

若单独一位校验位出错,四个S中会有一个或两个为1;

如P1错,S4 S3 S2 S1为1001,如P4错,S4 S3 S2 S1为1000。

任何两位(含数据位、校验位)同时出错,S4一定为0,而另外三个S位一定不全为0,此时只知道是两位同时出错,但不能确定是哪两位出错,故已无法纠错。

如D1、 P2出错,会使S4 S3 S2 S1为0001。

请注意,S4的作用在于区分是奇数位出错还是偶数位出错,S4为1是奇数位错,为0是无错或偶数位错。这不仅为发现两位错所必需,也是为确保能发现并改正一位错所必需的。

若不设置S4,某种两位出错对几个S的影响与单独另一位出错可能是一样的(不必花费精力推敲),此时若不加以区分,简单地按一位出错自动完成纠错处理反而会帮倒忙。

专业回答,满意请采纳为最佳答案,谢谢!。

全部

c语言海明校验码编码,海明校验码的编码规则有哪些?相关推荐

  1. 校验码(海明校验,CRC冗余校验,奇偶校验)

    循环冗余校验码 CRC码利用生成多项式为k个数据位产生r个校验位进行编码,其编码长度为n=k+r所以又称 (n,k)码. CRC码广泛应用于数据通信领域和磁介质存储系统中. CRC理论非常复杂,一般书 ...

  2. 计算机组成原理课程设计海明码,海明码生成与校验电路的设计

    海明码生成与校验电路的设计 沈阳航空航天大学 课课 程程 设设 计计 报报 告告 课程设计名称:计算机组成原理课程设计计算机组成原理课程设计 课程设计题目:海明码生成与校验电路的设计海明码生成与校验电 ...

  3. java 奇偶校验_校验码(海明校验,CRC冗余校验,奇偶校验)

    循环冗余校验码 CRC码利用生成多项式为k个数据位产生r个校验位进行编码,其编码长度为n=k+r所以又称 (n,k)码. CRC码广泛应用于数据通信领域和磁介质存储系统中. CRC理论非常复杂,一般书 ...

  4. 常用校验码(奇偶校验码、海明校验码、CRC校验码)

    常用校验码(奇偶校验码.海明校验码.CRC校验码) 一.奇偶校验码 二.海明校验码 三.CRC校验码   计算机系统运行时,各个部之间要进行数据交换.交换的过程中,会有发生误码的可能(即0变成1或1变 ...

  5. 【计算机网络】数据链路层 : 差错控制 ( 纠错编码 | 海明码 | “海明码“ 原理 | “海明码“ 工作流程 | 确定校验啊位数 | 确定校验码和数据位置 | 求校验码值 | 检错纠错 )★

    文章目录 一. "海明码" 工作原理 二. "海明码" 工作流程 三. 确定校验码位数 四. 确定校验码和数据位置 0. 确定校验码位置 1. 引入二进制位 2 ...

  6. 进制转换及如何求校验码(海明校验码及循环冗余校验CRC码)

    文章目录 前言 一.进制转换 1.1 二进制转换为八进制数和十六进制数 1.2 任意进制数转换为十进制数 1.3 十进制转换为任意进制 二.校验码求取 2.1海明校验码 2.2循环冗余校验CRC码 总 ...

  7. 2.1.5-2校验码—海明(汉明)校验码

    XYXZNB (҂◔∀◐҂)☆万圣节快乐♬☆◥(ฅº₩ºฅ)◤ 不给糖就捣蛋 ☆(●⁰౪⁰●)没钱 好的,在这个小节中我们会继续探讨数据校验的问题,我们会学习海明教研嘛,那海明教研嘛又可以称为汉民教研 ...

  8. [软考知识点总结③] 【中级软件设计师】计算机组成原理——校验码、海明校验码、奇偶校验码、循环校验码

    奇偶校验码(Parity Codes) 奇偶校验码最简单,但只能检测出奇数位出错. 如果发生偶数位错误就无法检测. 但经研究是奇数位发生错误的概率大很多. 而且奇偶校验码无法检测出哪位出错.所以属于无 ...

  9. 计算机组成原理数据校验之奇偶校验,海明校验

    文章内容基于:计算机组成原理_华中科技大学_中国大学MOOC(慕课) (icourse163.org) 仅作为日常学习的笔记整理 目录 一. 数据校验的基本原理 1.数据校验的必要性 2.数据校验的基 ...

最新文章

  1. 2022-2028年中国丝印硅胶行业市场深度分析及投资前景趋势报告
  2. 【Java】找到链表中倒数第k个结点
  3. leetcode 279. 完全平方数 bfs广度优先解法 图解 动态规划解法 c代码
  4. 多线程编程:阻塞、并发队列的使用总结
  5. 聊聊高并发(三十一)解析java.util.concurrent各个组件(十三) 理解Exchanger交换器
  6. ubuntu麒麟下安装并启用搜狗输入法
  7. 球形坐标和Cartesian 坐标的转换 spherical coordinate
  8. 使用gridlayout布局后,因某些原因又删除,并整理文件夹结构时,Unable to resolve target #39;android-7#39;...
  9. 图的存储结构(邻接矩阵)
  10. Optional Chaining 进入 ES2020,不用满屏`x x.yyy`了
  11. 从头来之【iOS及历史版本特性介绍】
  12. [软件更新]卡巴斯基全功能安全软件2010简体中文版程序发布
  13. 【.NET程序员面试题----初级】第一卷
  14. 人人商城小程序消息服务器配置,人人商城小程序订阅消息设置方法和几个坑!...
  15. 我的世界空岛生存服务器制作,《我的世界 》10款PC服务器专属空岛玩法大盘点!...
  16. 计算机毕业设计之java+springboot基于vue的4S店车辆管理系统
  17. QQ空间美化高仿认证PS动态皮肤背景音乐添加快速聊天
  18. 你应当知道的人工智能发展历史
  19. 个人笔记-如何学习(上)
  20. 职业规划-《你的降落伞是什么颜色》书中的精髓:如何挖掘自我优势,找到心仪的工作?

热门文章

  1. win7网络里的计算机,win7看不到局域网计算机怎么办
  2. 一个 24 通道 100Msps 逻辑分析仪
  3. html微信气泡插件,微信加上个性化插件工具,瞬间逼格满满
  4. 后端优化 | VINS-Mono 论文公式推导与代码解析分讲
  5. 医疗保健客户关系管理(CRM)-市场现状及未来发展趋势
  6. VS2013中F#的新特性
  7. C#中导出Excel的单元格属性设置
  8. Apple watch ,小米微信通知
  9. 初始化mysql5.7.18_MySQL5.7.18,初始化完成登录,提示密码过
  10. 官方正版授权Apowersoft 傲软抠图AI智能换背景工具软件