海明码纠错

海明码的检测出错介绍

2007-11-10 14:57:33| 分类: 电脑 | 标签: |举报 |字号大中小 订阅

1. 如果传输的数据位是m 位,加了r 位冗余位,那么总共传输的数据单元是m+r位。

为了能够发现这m+r位数据单元在传输到目的端后是否出错,并能够指明是在哪一位出错,

那么r 至少应该能够代表m+r+1种状态。

r 比特能够代表2^r不同状态。

因此,2^r>=m+r

若m=7,则满足上式的最小r 值为:4。

海明码的纠错原理

海明码的接收端的公式:

S3= P3⊕ D4⊕D3 ⊕D2

S2= P2⊕D4 ⊕D3 ⊕D1

S1= P1⊕D4 ⊕D2 ⊕D1

假定 海明码1010101在传送中变成了1000101

S3= P3⊕ D4⊕D3 ⊕D2=0⊕1⊕0 ⊕0 =1

S2= P2⊕D4 ⊕D3 ⊕D1=0⊕1⊕ 0 ⊕1=0

S1= P1⊕D4 ⊕D2 ⊕D1=1⊕1⊕ 0 ⊕1=1

因此, 由S3S2S1= 101,指出第5位错, 应由0变1

2. 海明码是一位纠错码,即如果数据在传输过程中有一位出错,

则可以知道出错的位数并通过取反将其改正过来。

海明码的基本意思是给传输的数据增加r 个校验位,从而增加两个合法消息(合法码字)的

不同位的个数(海明距离)。

假设要传得信息有m 位,则经海明编码的码字就有n=m+r位。

3. 例题1

设被校验数据是二进制数01101101, 求其海明码

二进制存放位置: A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12

数据存放的位置: D1 D2 D3 D4 D5 D6 D7 D8

在你的例子中: 0 1 1 0 1 1 0 1

海明码: C1 C2 C3 C4

C1 = D1 + D2 + D4 + D5 + D7

C2 = D1 + D3 + D4 + D6 + D7

C3 = D2 + D3 + D4 + D8

C4 = D5 + D6 + D7 + D8

至于为什么,看那个数据的位置编号,D1 在 3 的位置上,而这个的话可以用C1 + C2得到,

所以在计算C1的话就可以用这些计算位置码需要用到C1的数据二进制码来加,当1的个数为偶数时,值为0,否则为1。

就你的数据来说,C1 = 0 + 1 + 0 + 1 + 0 = 0

c2 = 0 + 1 + 0 + 1 + 0 = 0

c3 = 1 + 1 + 0 + 1 = 1

c4 = 1 + 1 + 0 + 1 = 1

C1 C2 C3 C4= 0 0 1 1

例题2

32位2进制数 需要6位校验位

假如有k 位数据 需要n 位校验位 满足关系k+n

假设32位2进制编码为[***********][1**********]111 (假设全1) 增添的校验位位abcdef

按以下方法将校验位插入原有代码ab1c111d1111111e[**************]f111111 即就是将校验位插入第1位 第2位 第4位 第8位 第16位……

建立一个表以获得海明码的监督关系式:

ab1c111d1111111e[**************]f111111

[***********][***********]10

[***********][***********]01

[***********][***********]11

[***********][***********]00

[***********][***********]00

[***********][***********]11

看出来这个表是如何建出来的么 第一行是插入检验位的38位海明码 第二行开始都是从检验位开始做1和0的循环

比如说第2行是从a 开始做1个1与1个0的循环,第3行是从b 开始做2个1与2个0的循环,

第3行是从c 开始做4个1与4个0的循环,依次类推……

将每行有1的码位挑出来求异或便是实际的监督关系方程了

比如:

第2行所有奇数位为1 即是挑取源码中所有奇数位上的码值取异或 s1=a+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1

(+在这里代表异或)

同理第3行 2位3位6位7位10位11位……为1 则取在源码中对应位的码值取异或

s2=b+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1

s3=c+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1

s4=d+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1

s5=e+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1

s6=f+1+1+1+1+1+1

以上6个公式便是38位海明码的监督方程式了

要求各个校验位的实际值 只需要6个监督方程式均等于0 即

s1=s2=s3=s4=s5=s6=0

解方程得出 a=0 b=0 c=0 d=1 e=1 f=0

带入各回到各自的校验码位上 则这个38位海明码为

[***********][***********]11

若需要校验此海明码 只需要求出监督方程中s1 s2 s3 s4 s5 s6的值 然后由高到低排列s6s5s4s3s2s1 得出的数据即是第几位出错

对该位求反便可以达到纠错的目的了

例如 上段海明码第11位出错 码段变为

[***********][***********]11

监督方程解得

s1=0+1+1+1+1+0+1+1+1+1+1+1+1+1+1+1+1+1+1=1

s2=0+1+1+1+1+0+1+1+1+1+1+1+1+1+1+1+1+1+1=1

s3=0+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1=0

s4=1+1+1+0+1+1+1+1+1+1+1+1+1+1+1+1=1

s5=1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1=0

s6=0+1+1+1+1+1+1=0

由高到低排列 得01011 即是2进制的第11位出错 11位取反便可以纠错了 大家可以看出来海明码代码越长 校验位数相对数据位数比例越低 即传输效率越高 但是如果出现多位出错时海明码就失去纠错能力

所以适合传输误码率低的线路

例题3

例如:

一段源码110011, 为了传输具有纠错能力,需要追加4位检验位abcd ,检验位按如下方法插入源码中:

ab1c100d11

即是插入在 第1位 第2位 第4位 第8位……

海明码的监督关系式按如下方法获得

插入后的码 a b 1 c 1 0 0 d 1 1 都是从检验位abcd 上开始取1

监督关系式 s1 1 0 1 0 1 0 1 0 1 0 第一行是1个1 1个0地循环

s2 0 1 1 0 0 1 1 0 0 1 第二行是2个1 2个0地循环

s3 0 0 0 1 1 1 1 0 0 0 第三行是4个1 4个0地循环

s4 0 0 0 0 0 0 0 1 1 1 第四行是8个1 8个0地循环……

监督关系式为

s1=a+1+1+0+1 +为按位异或运算

s2=b+1+0+0+1 每行在取1的位置上取出相应的位码做按位异或运算 s3=c+1+0+0

s4=d+1+1

由监督关系式就算出检测位的值 即在s1 s2 s3 s4分别等于0时解方程的各检测位的值

a=1+1+0+1=1

b=1+0+0+1=0

c=1+0+0=1

d=1+1=0

所以 获得的实际海明码是 1011100011

当需要纠错数据时只需判断s1 s2 s3 s4的值是否为0 为1即存在错误位 错误的具体位数为 s4s3s2s1

举例:1011100011的第7位错误 得误码 1011101011

s1=1+1+1+1+1=1

s2=0+1+0+1+1=1

s3=1+1+0+1=1

s4=0+1+1=0

由高到低排列位 得0111 即检测到第7位是错误位 随后就可以对该位取反纠正错误了

海明码的检测出错介绍

2007-11-10 14:57:33| 分类: 电脑 | 标签: |举报 |字号大中小 订阅

1. 如果传输的数据位是m 位,加了r 位冗余位,那么总共传输的数据单元是m+r位。

为了能够发现这m+r位数据单元在传输到目的端后是否出错,并能够指明是在哪一位出错,

那么r 至少应该能够代表m+r+1种状态。

r 比特能够代表2^r不同状态。

因此,2^r>=m+r

若m=7,则满足上式的最小r 值为:4。

海明码的纠错原理

海明码的接收端的公式:

S3= P3⊕ D4⊕D3 ⊕D2

S2= P2⊕D4 ⊕D3 ⊕D1

S1= P1⊕D4 ⊕D2 ⊕D1

假定 海明码1010101在传送中变成了1000101

S3= P3⊕ D4⊕D3 ⊕D2=0⊕1⊕0 ⊕0 =1

S2= P2⊕D4 ⊕D3 ⊕D1=0⊕1⊕ 0 ⊕1=0

S1= P1⊕D4 ⊕D2 ⊕D1=1⊕1⊕ 0 ⊕1=1

因此, 由S3S2S1= 101,指出第5位错, 应由0变1

2. 海明码是一位纠错码,即如果数据在传输过程中有一位出错,

则可以知道出错的位数并通过取反将其改正过来。

海明码的基本意思是给传输的数据增加r 个校验位,从而增加两个合法消息(合法码字)的

不同位的个数(海明距离)。

假设要传得信息有m 位,则经海明编码的码字就有n=m+r位。

3. 例题1

设被校验数据是二进制数01101101, 求其海明码

二进制存放位置: A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12

数据存放的位置: D1 D2 D3 D4 D5 D6 D7 D8

在你的例子中: 0 1 1 0 1 1 0 1

海明码: C1 C2 C3 C4

C1 = D1 + D2 + D4 + D5 + D7

C2 = D1 + D3 + D4 + D6 + D7

C3 = D2 + D3 + D4 + D8

C4 = D5 + D6 + D7 + D8

至于为什么,看那个数据的位置编号,D1 在 3 的位置上,而这个的话可以用C1 + C2得到,

所以在计算C1的话就可以用这些计算位置码需要用到C1的数据二进制码来加,当1的个数为偶数时,值为0,否则为1。

就你的数据来说,C1 = 0 + 1 + 0 + 1 + 0 = 0

c2 = 0 + 1 + 0 + 1 + 0 = 0

c3 = 1 + 1 + 0 + 1 = 1

c4 = 1 + 1 + 0 + 1 = 1

C1 C2 C3 C4= 0 0 1 1

例题2

32位2进制数 需要6位校验位

假如有k 位数据 需要n 位校验位 满足关系k+n

假设32位2进制编码为[***********][1**********]111 (假设全1) 增添的校验位位abcdef

按以下方法将校验位插入原有代码ab1c111d1111111e[**************]f111111 即就是将校验位插入第1位 第2位 第4位 第8位 第16位……

建立一个表以获得海明码的监督关系式:

ab1c111d1111111e[**************]f111111

[***********][***********]10

[***********][***********]01

[***********][***********]11

[***********][***********]00

[***********][***********]00

[***********][***********]11

看出来这个表是如何建出来的么 第一行是插入检验位的38位海明码 第二行开始都是从检验位开始做1和0的循环

比如说第2行是从a 开始做1个1与1个0的循环,第3行是从b 开始做2个1与2个0的循环,

第3行是从c 开始做4个1与4个0的循环,依次类推……

将每行有1的码位挑出来求异或便是实际的监督关系方程了

比如:

第2行所有奇数位为1 即是挑取源码中所有奇数位上的码值取异或 s1=a+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1

(+在这里代表异或)

同理第3行 2位3位6位7位10位11位……为1 则取在源码中对应位的码值取异或

s2=b+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1

s3=c+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1

s4=d+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1

s5=e+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1

s6=f+1+1+1+1+1+1

以上6个公式便是38位海明码的监督方程式了

要求各个校验位的实际值 只需要6个监督方程式均等于0 即

s1=s2=s3=s4=s5=s6=0

解方程得出 a=0 b=0 c=0 d=1 e=1 f=0

带入各回到各自的校验码位上 则这个38位海明码为

[***********][***********]11

若需要校验此海明码 只需要求出监督方程中s1 s2 s3 s4 s5 s6的值 然后由高到低排列s6s5s4s3s2s1 得出的数据即是第几位出错

对该位求反便可以达到纠错的目的了

例如 上段海明码第11位出错 码段变为

[***********][***********]11

监督方程解得

s1=0+1+1+1+1+0+1+1+1+1+1+1+1+1+1+1+1+1+1=1

s2=0+1+1+1+1+0+1+1+1+1+1+1+1+1+1+1+1+1+1=1

s3=0+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1=0

s4=1+1+1+0+1+1+1+1+1+1+1+1+1+1+1+1=1

s5=1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1=0

s6=0+1+1+1+1+1+1=0

由高到低排列 得01011 即是2进制的第11位出错 11位取反便可以纠错了 大家可以看出来海明码代码越长 校验位数相对数据位数比例越低 即传输效率越高 但是如果出现多位出错时海明码就失去纠错能力

所以适合传输误码率低的线路

例题3

例如:

一段源码110011, 为了传输具有纠错能力,需要追加4位检验位abcd ,检验位按如下方法插入源码中:

ab1c100d11

即是插入在 第1位 第2位 第4位 第8位……

海明码的监督关系式按如下方法获得

插入后的码 a b 1 c 1 0 0 d 1 1 都是从检验位abcd 上开始取1

监督关系式 s1 1 0 1 0 1 0 1 0 1 0 第一行是1个1 1个0地循环

s2 0 1 1 0 0 1 1 0 0 1 第二行是2个1 2个0地循环

s3 0 0 0 1 1 1 1 0 0 0 第三行是4个1 4个0地循环

s4 0 0 0 0 0 0 0 1 1 1 第四行是8个1 8个0地循环……

监督关系式为

s1=a+1+1+0+1 +为按位异或运算

s2=b+1+0+0+1 每行在取1的位置上取出相应的位码做按位异或运算 s3=c+1+0+0

s4=d+1+1

由监督关系式就算出检测位的值 即在s1 s2 s3 s4分别等于0时解方程的各检测位的值

a=1+1+0+1=1

b=1+0+0+1=0

c=1+0+0=1

d=1+1=0

所以 获得的实际海明码是 1011100011

当需要纠错数据时只需判断s1 s2 s3 s4的值是否为0 为1即存在错误位 错误的具体位数为 s4s3s2s1

举例:1011100011的第7位错误 得误码 1011101011

s1=1+1+1+1+1=1

s2=0+1+0+1+1=1

s3=1+1+0+1=1

s4=0+1+1=0

由高到低排列位 得0111 即检测到第7位是错误位 随后就可以对该位取反纠正错误了


相关文章

  • 海明码原理
  • 在数据中间加入几个校验码,码距均匀拉大,将数据的每个二进制位分配在几个奇偶校验组里,当某一位出错,会引起几个校验位的值发生变化. 海明不等式: 校验码个数为K,2个信息,1个信息用来指出"没有错误",其余2-1个指出错误 ...查看


  • 网络工程师复习资料(软考)通信基础
  • 一 概念: 1 数据通信系统的模型  数据(data)--运送消息的实体.  信号(signal)--数据的电气的或电磁的表现.  DTE-数据终端设备  DCE-数据连接(通信)设备 2 传输方式 基带传输:传输基带信号,基带信号 ...查看


  • 计算机组成原理和系统结构课后答案
  • 1.1 概述数字计算机的发展经过了哪几个代?各代的基本特征是什么? 略. 1.2 你学习计算机知识后,准备做哪方面的应用? 略. 1.3 试举一个你所熟悉的计算机应用例子. 略. 1.4 计算机通常有哪些分类方法?你比较了解的有哪些类型的计 ...查看


  • 2016年计算机四级考试嵌入式工程师考试题及答案
  • 2016年计算机四级考试嵌入式工程师考试题及答案 本文为大家整理日工的是计算机嵌入式系统考试题,希望对大家有所帮助! (1)进位计数制与转换:这样比较简单,也应该掌握怎么样进行换算,有出题的可能. (2)计算机中数的表示:源码.反码与补码. ...查看


  • 从小说人物分析简奥斯汀的情感智慧
  • 最新英语专业全英原创毕业论文,都是近期写作 1 <永别了武器>悲剧特征的分析 2 从警察与赞美诗中分析欧亨利的写作风格 3 从违反合作原则的角度解读会话含义 4 对<汤姆叔叔的小屋>中人物的圣经原型解读 5 初中英语 ...查看


  • 自考计算机组成原理课后习题答案
  • 习 题 2 参考答案(参见课本P.58) 1. 解释下列术语 解:可在课堂讲述的内容中寻找答案,也可参考课本下述段落的内容. 原码(P14.-7--5),补码(P15.-1-P16.1),反码(P17.17-18), 移码(P18.7-10 ...查看


  • 海明威的性格如何海明威为什么自杀
  • 海明威的性格如何 海明威为什么自杀 海明威的性格 海明威的全名是欧内斯特·米勒尔·海明威,他是一名小说家,曾获得了不少的奖项.那么,海明威的性格是什么样的呢? 海明威的性格中最为明显的就是他非常坚持,这从海明威对于作品的修改中可以看出来.海 ...查看


  • 海明威研究综述
  • 2011年6月总第26卷社科纵横 SOCIALSCIENCESREVIEW 新理论版 海明威研究综述 黄娟娟* (上海大学上海 200444) [内容摘要]海明威是蜚声世界文坛的美国现代著名小说家,也是中国人最喜欢的美国现代作家之一.他以& ...查看


  • 中美广告语言文化异同研究
  • 最新英语专业全英原创毕业论文,都是近期写作 1 广告英语的语言特征 2 论商标翻译的原则及策略 3 从语用学角度看广告英语中的模糊表达 4 从合作原则和礼貌原则的角度分析外贸函电中否定信息的传递 5 论英汉翻译中的文化因素 6 7 从精神分 ...查看


热门内容