海明校验码的原理详解
海明码校验知识讲解

海明校验码
海明码是一种可以纠正一位差错的编 码。它是利用在信息位为k位,增加r位冗 余位,构成一个n=k+r位的码字,然后用r 个监督关系式产生的r个校正因子来区分 无错和在码字中的n个不同位置的一位错。 它必需满足以下关系式:
2r ≥ k+r+1 或 2r ≥ n+1
海明校验码
• 由err≠0可知接收码字有错, • 3)码字的错误位置就是错误累加器
(err)的值3。 • 4)纠错--对码字的第3位值取反得正确
码字:
• "1 0 1 1 1 0 0 0 1 1 0 0" • 5)把位于2的k次方位的冗余码删除得
信息码:"1 1 0 0 1 1 0 0"
上例中构建了一个码字 011100101010, 假定实际接收到的数据 011100101110. 则接收方可以计算出哪一位出错并对其进 行更正。方法就是验证每一个校验位。记 下所有出错的校验位,可以发现校验位2 和8的数据不正确. 错误校验位 2 + 8 = 10, 则位置10的数据出错。一般说来,对所有 校验位进行检查, 将所有出错的校验位置 相加, 得到的就是错误信息所在的位置.
奇偶校验规律
校验位的取值(0或1)将使整个校 验码中“1”的个数为奇数或偶数,所以有 两种可供选择的校验规律:
奇校验──整个校验码(有效信息位 和校验位)中“1”的个数为奇数。
偶校验──整个校验码中“1”的个数 为偶数。
2.简单奇偶校验 简单奇偶校验仅实现横向的奇偶校验,
下表给出几个字节的奇偶校验码的编码结 果。最高一位为校验位,其余8位为信息 位。在实际应用中,多采用奇校验,因为 奇校验中不存在全“0”代码,在某些场合 下更便于判别。
海明校验码的原理详解

海明校验码的原理详解2006年12月27日星期三 10:57海明码是一种多重(复式)奇偶检错系统。
它将信息用逻辑形式编码,以便能够检错和纠错。
用在海明码中的全部传输码字是由原来的信息和附加的奇偶校验位组成的。
每一个这种奇偶位被编在传输码字的特定位置上。
实现得合适时,这个系统对于错误的数位无论是原有信息位中的,还是附加校验位中的都能把它分离出来。
推导并使用长度为m位的码字的海明码,所需步骤如下:1、确定最小的校验位数k,将它们记成D1、D2、…、Dk,每个校验位符合不同的奇偶测试规定。
2、原有信息和k个校验位一起编成长为m+k位的新码字。
选择k校验位(0或1)以满足必要的奇偶条件。
3、对所接收的信息作所需的k个奇偶检查。
4、如果所有的奇偶检查结果均为正确的,则认为信息无错误。
如果发现有一个或多个错了,则错误的位由这些检查的结果来唯一地确定。
校验位数的位数推求海明码时的一项基本考虑是确定所需最少的校验位数k。
考虑长度为m位的信息,若附加了k个校验位,则所发送的总长度为m+k。
在接收器中要进行k个奇偶检查,每个检查结果或是真或是伪。
这个奇偶检查的结果可以表示成一个k位的二进字,它可以确定最多2k种不同状态。
这些状态中必有一个其所有奇偶测试试都是真的,它便是判定信息正确的条件。
于是剩下的(2k-1)种状态,可以用来判定误码的位置。
于是导出下一关系:2k-1≥m+k码字格式从理论上讲,校验位可放在任何位置,但习惯上校验位被安排在1、2、4、8、…的位置上。
图5列出了m=4,k=3时,信息位和校验位的分布情况。
图5 海明码中校验位和信息位的定位校验位的确定下面为我增加,意在提出编码方法以助理解(但编码是否主要标准不可知)每行的值等于数值为1的各位码相异或。
如m=4,k=3.数据位前三行,校验位为后三行。
即A=p1⊕D1⊕D3⊕D4=0 得P1=D1⊕D3⊕D4B=P2⊕D2⊕D3⊕D4=0 得P2=D2⊕D3⊕D4C=P3⊕D1⊕D2⊕D3⊕D4=0 得P3=D1⊕D2⊕D3⊕D4 以下计算访求同下k个校验位是通过对m+k位复合码字进行奇偶校验而确定的。
海明码详解(精)

海明码详解这两天也在研究海明码的问题,把我的理解说给你吧,按照我说的可以顺利得到海明码步骤:一、确定校验码的位数k二、确定校验码的位置三、数据的位置四、求出校验位的值首先,海明码的作用是:在编码中如果有错误,可以表达出第几位出了错,二进制的数据只有0和1,修改起来很容易,求反即可,这需要加入几个校验位。
重要的知识点:海明码的组成,不是简单的在后面加上校验位,海明码≠数据位+检验位那检验位该怎么加呢?它是根据总的位置来加的,加在【2的几次幂】的位置上,这个位置不是我们通常的从右向左数位置,刚好相反,是从左右如下图:P是校验位, D是数据位:原始的数据是:101101 校验位是插到了 1 2 4 8这几个位置上的。
位置M1M2M3M4M5M6M7M8M9M10甲P1 P2 D1P3 D2D3D4P4 D5D6乙10 110 1步骤一、确定校验码的位数k公式:m+k+1≤2^k (m是数据位的位数,K是要加的校验位的位数数据长是4位,校验码就是3位4+k+1≤2^kK最小只能是3数据长是5,6,7,8,9,校验码就是4位5+k+1≤2^kK最小就只能取4101101 数据位是6位,那校验位应该是4位,那总位数是:6+4=10位步骤二、确定校验码的位置位置M1M2M3M4M5M6M7M8M9M10甲P1 P2 D1P3 D2D3D4P4 D5D6乙10 110 1(图1)注意:【位置是从左----------右编码】(网上好多都反了,都是从右往左的,这应该是错的)校验位就插在2的幂次方的位置上。
4个检验位就是插到,2的0次方=1,2的1次方=2,2的2次方=4,2的3次方=8的位置上。
始上(图1)步骤三、数据的位置数据位置就按顺序写入进去就OK了,不要写到校验位就是的了。
步骤四、求出校验位的值也就是求图1中:p1 p2 p3 p4 的值。
那这几个数该如何求值呢?这里就要引进一个线性码的概念了,就是这4位校验码和图1中的那些位置上的数有关系呢?这里有一个进制转换的问题要先解决:因为是4位校验码,所以我们可以s4 s3 s2 s1 这个数来表示这个4位校验码,也就是p4 p3 p2 p1M1号位是十进制的1 转成四位二进制数就是:0001 即M1 和s1有关系同样的道理M2 变成四位二进制数: 0010 0010----s4 s3 s2 s1 s2的位置上是1 ,所以M2和S2有关系。
海明码详解

海明码详解①海明校验的基本思想将有效信息按某种规律分成若干组,每组安排一个校验位,做奇偶测试,就能提供多位检错信息,以指出最大可能是哪位出错,从而将其纠正。
实质上,海明校验是一种多重校验。
②海明校验的特点它不仅具有检测错误的能力,同时还具有给出错误所在准确位置的能力。
一.校验位的位数校验位的位数与有效信息的长度有关设:N--为校验码的位数 K--是有效信息位 r--校验位(分成r组作奇偶校验,能产生r位检错信息)海明码应满足 N=K+r≤2r-1 若r=3 则N=K+r≤7 所以K≤4二.分组原则`在海明码中,位号数(1、2、3、……、n)为2的权值的那些位,即:1(20)、2(21)、 4(22)、8(23)、…2r-1位,作为奇偶校验位并记作: P1、P2、P3 、P4、…Pr,余下各位则为有效信息位。
例如: N=11 K=7 r=4 相应海明码可示意为位号 1 2 3 4 5 6 7 8 9 10 11P占位P1 P2 × P3 × × × P4 × × ×其中×均为有效信息,海明码中的每一位分别被P1P2P3P4… Pr 中的一至若干位所校验,其规律是:第i位由校验位位号之和等于i的那些校验位所校验如:海明码的位号为3,它被P1P2(位号分别为1,2)所校验海明码的位号为5,它被P1P3(位号分别为 1,4)所校验归并起来: 形成了4个小组,每个小组一个校验位,校验位的取值,仍采用奇偶校验方式确定。
如表2·6 、表2·7所示:三.编码、查错、纠错原理以4位有效信息(b1、b2、b3、b4)和3位校验位(P1、P2、P3)为例: K=4 r=3 海明序号 1 2 3 4 5 6 7海明码 P1 P2 b1 P3 b2 b3 b4根据表2-8可以看到(1)每个小组只有一位校验位,第一组是P1、第二组是P2、第三组是P3。
海明码校验和纠错原理详细

海明码校验和纠错原理详细海明纠错码当计算机存储或移动数据时,可能会产⽣数据位错误,这时可以利⽤汉明码来检测并纠错,简单的说,汉明码是⼀个错误校验码码集,由Bell实验室的R.W.Hamming发明,因此定名为汉明码。
海明码(Hamming Code)是⼀个可以有多个校验位,具有检测并纠正⼀位错误的纠错码,所以它也仅⽤于通信特性较好的环境中,如以太局域⽹中,因为如果通道特性不好的情况下,出现的错通常也不是⼀位。
海明码的检错、纠错基本思想是将有效信息按某种规律分成若⼲组,每组安排⼀个校验位进⾏奇偶性测试,然后产⽣多位检测信息,并从中得出具体的出错位置,最后通过对错误位取反来将其纠正。
要采⽤海明码纠错,需要按以下⼏个步骤。
1计算校验位数2 确定校验码位置3 确定校验码4 实现校验和纠错1. 计算校验位数它是这样的规定的:假设⽤N表⽰添加了校验码位后整个信息的⼆进制位数,⽤K代表其中有效信息位数,r表⽰添加的校验码位,它们之间的关系应满⾜:N=K+r≤2r-1。
如K=5,则要求2r-r≥5+1=6,根据计算可以得知r的最⼩值为4,也就是要校验5位信息码,则要插⼊4位校验码。
如果信息码是8位,则要求2r-r≥8+1=9,根据计算可以得知r的最⼩值也为4。
根据经验总结,得出信息码和校验码位数之间的关系如表5-1所⽰。
2.确定校验码位置上⼀步我们确定了对应信息中要插⼊的校验码位数,但这还不够,因为这些校验码不是直接附加在信息码的前⾯、后⾯或中间的,⽽是分开插⼊到不同的位置。
但不⽤担⼼,校验码的位置很容易确定的,那就是校验码必须是在2n次⽅位置,如第1、2、4、8、16、32,……位(对应20、21、22、23、24、25,……,是从最左边的位数起的),这样⼀来就知道了信息码的分布位置,也就是⾮2n次⽅位置,如第3、5、6、7、9、10、11、12、13,……位(是从最左边的位数起的)。
举⼀个例⼦,假设现有⼀个8位信息码,即b1、b2、b3、b4、b5、b6、b7、b8,由表5-1得知,它需要插⼊4位校验码,即p1、p2、p3、p4,也就是整个经过编码后的数据码(称之为“码字”)共有12位。
海明校验码

例如:欲传递信息为b4b3b2b1(n=4),根据 2k≥n+k+1,可求出配置成海明码需增添检测位 k=3,且它们位置的安排如下:
二进制序号 1 2 3 4 5 6 7
ห้องสมุดไป่ตู้名称
C1 C2 b4 C4 b3 b2 b1
如果按照配偶原则来配置海明码,则
C1 应使1,3,5,7位中的“1”的个数为偶数;
1234567
正确的海明码 0 1 0 0 1 0 1
接收到的海明码 0 1 0 0 1 1 1
则新的检测位为:
P4=4⊕5⊕6⊕7,即P4=0⊕1⊕1⊕1=1
P2=2⊕3⊕6⊕7,即P2=1⊕0⊕1⊕1=1
P1=1⊕3⊕5⊕7,即P1=0⊕0⊕1⊕1=0
• 由此可见,传送结果P4、P2均不呈偶数, 显然出了差错。那么,错位在哪一位呢? 极为有意思的是,P4、P2、P1所构成的二 进制值恰恰是出错的位置,即P4P2P1=110, 表示第六位出错。发现错误后,计算机便 自动地将错误的第六位“1”纠正为“0”。
P1=1⊕3⊕5⊕7,即P1=C1⊕b4⊕b3⊕b1 P2=2⊕3⊕6⊕7,即P2=C2⊕b4⊕b2⊕b1 P4=4⊕5⊕6⊕7,即P4=C4⊕b3⊕b2⊕b1
设已知传送的正确海明码(按配偶原则配置)为 0100101,若传送后接收到的海明码为0100111, 其出错位可按下述步骤进行:
令:
二进制序号
• 又如,若收到按偶配置的海明码为1100101, 则经检测得:
P4=4⊕5⊕6⊕7,即P4=0⊕1⊕0⊕1=0 P2=2⊕3⊕6⊕7,即P2=1⊕0⊕0⊕1=0 P1=1⊕3⊕5⊕7,即P1=1⊕0⊕1⊕1=1 • 所以,出错位为:P4P2P1=001,即第一位。 可是第一位不是欲传送的信息位,而是检 测位,在一般情况下,可以不予纠正。
海明码和CRC

一、海明码校验法1.海明码海明码是采用多位校验码的方式,在信息数据中合理加入校验位,将码距均匀拉大,校验中的每一位都对不同的信息数据位进行奇偶校验。
海明码是利用在信息位为K位,增加r位冗余位,构成一个n=k+r的码字,然后用r个监督关系式产生r 个校正因子来区分区无错和在码字中的n个不同位置的一位错,它必需满足关系式:2r>=n+1或2r>=k+r+12.海明码的生成与接收方法一:1)海明码的生成。
例1.已知:信息码为:"0010"。
海明码的监督关系式为:S2=a2+a4+a5+a6S1=a1+a3+a5+a6S0=a0+a3+a4+a6求:海明码码字。
解:1)由监督关系式知冗余码为a2a1a0。
2)冗余码与信息码合成的海明码是:"0010a2a1a0"。
设S2=S1=S0=0,由监督关系式得:a2=a4+a5+a6=1a1=a3+a5+a6=0a0=a3+a4+a6=1因此,海明码码字为:"0010101"2)海明码的接收。
例2.已知:海明码的监督关系式为:S2=a2+a4+a5+a6S1=a1+a3+a5+a6S0=a0+a3+a4+a6接收码字为:"0011101"(n=7)求:发送端的信息码。
解:1)由海明码的监督关系式计算得S2S1S0=011。
2)由监督关系式可构造出下面错码位置关系表:S2S1S0000001010100011101110111错码位置无错a0a1a2a3a4a5a63)由S2S1S0=011查表得知错码位置是a3。
4)纠错--对码字的a3位取反得正确码字:"0 0 1 0 1 0 1"5)把冗余码a2a1a0删除得发送端的信息码:"0010"例 3.若海明码的监督关系为:S0=a0+a3+a4+a6 ;S1=a1+a3+a5+a6 ;S2=a2+a4+a5+a6 。
海明码编码计算、检错和纠错原理解析

海明码编码计算、检错和纠错原理解析一、海明码检错/纠错基本思想海明码(Hamming Code)是一个可以有多个校验位,具有检测并纠正一位错误代码的纠错码,所以也仅用于信道特性比较好的环境中,如以太局域网。
它的检错、纠错基本思想如下:(1)将有效信息按某种规律分成若干组,每组安排一个校验位通过异或运算进行校验,得出具体的校验码(2)在接收端同样通过异或运算看各组校验结果是否正确,并观察出错的校校组,或者多个出错的校验组的共同校验位,得出具体的出错比特位(3)对错误位取反来将其纠正二、海明码计算海明码计算要按以下步骤来进行:计算校验码位数→确定校验码位置→确定校验码1. 计算校验码位数假设用N表示添加了校验码位后整个传输信息的二进制位数,用K代表其中有效信息位数,r表示添加的校验码位数,它们之间的关系应满足:N=K+r≤2r-1(是为了确保r位校验码能校验全部的数据位,因为r位校验码所能表示的最大十进制数为2r-1,同时也确保各位码本身不被其他校验码校验)信息码位数12~45~1112~2627~5758~120121~247校验码位数2 3 4 5 6 7 82. 确定校验码位置海明码的校验码的位置必须是在2n次方位置(n从0 开始,分别代表从左边数起分别是第1、2、4、8、16……),信息码也就是在非2n次方位置3. 确定校验码校验位置选择原则:第i位校验码从当前校验码位开始,每次连续校验i位后再跳过i位,然后再连续校验i位,再跳过i位,以此类推。
确定每个校验码所校验的比特位:P1校验码位校验的码字位为:第1位(也就是P1本身)、第3位、第5位、第7位、第9位、第11位、第13位、第15位,……。
P2校验码位校验的码字位为:第2位(也就是P2本身)、第3位,第6位、第7位,第10位、第11位,第14位、第15位,……。
P3校验码位校验的码字位为:第4位(也就是P4本身)、第5位、第6位、第7位,第12位、第13位、第14位、第15位,第20位、第21位、第22位、第23位,……。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
海明校验码的原理详解
2006年12月27日星期三 10:57
海明码是一种多重(复式)奇偶检错系统。
它将信息用逻辑形式编码,以便能够检错和纠错。
用在海明码中的全部传输码字是由原来的信息和附加的奇偶校验位组成的。
每一个这种奇偶位被编在传输码字的特定位置上。
实现得合适时,这个系统对于错误的数位无论是原有信息位中的,还是附加校验位中的都能把它分离出来。
?
推导并使用长度为m位的码字的海明码,所需步骤如下:?
1、确定最小的校验位数k,将它们记成D1、D
2、…、Dk,每个校验位符合不同的奇偶测试规定。
?
2、原有信息和k个校验位一起编成长为m+k位的新码字。
选择k校验位(0或1)以满足必要的奇偶条件。
?
3、对所接收的信息作所需的k个奇偶检查。
?
4、如果所有的奇偶检查结果均为正确的,则认为信息无错误。
?
如果发现有一个或多个错了,则错误的位由这些检查的结果来唯一地确定。
?
校验位数的位数?
推求海明码时的一项基本考虑是确定所需最少的校验位数k。
考虑长度为m位的信息,若附加了k个校验位,则所发送的总长度为m+k。
在接收器中要进行k个奇偶检查,每个检查结果或是真或是伪。
这个奇偶检查的结果可以表示成一个k位的二进字,它可以确定最多2k种不同状态。
?这些状态中必有一个其所有奇偶测试试都是真的,它便是判定信息正确的条件。
于是剩下的(2k-1)种状态,可以用来判定误码的位置。
于是导出下一关系:?
2k-1≥m+k?
码字格式?
从理论上讲,校验位可放在任何位置,但习惯上校验位被安排在1、2、4、8、…的位置上。
?
图5列出了m=4,k=3时,信息位和校验位的分布情况。
?
码字位置B1B2B3B4B5B6B7
校验位x x x
信息位x x x x
复合码字P1P2D1P3D2D3D4
图5?海明码中校验位和信息位的定位?
校验位的确定?
下面为我增加,意在提出编码方法以助理解(但编码是否主要标准不可知)
每行的值等于数值为1的各位码相异或。
如m=4,k=3.数据位前三行,校验位为后三行。
即
A=p1⊕D1⊕D3⊕D4=0?得P1=D1⊕D3⊕D4
B=P2⊕D2⊕D3⊕D4=0?得P2=D2⊕D3⊕D4
C=P3⊕D1⊕D2⊕D3⊕D4=0?得P3=D1⊕D2⊕D3⊕D4以下计算访求同下
k个校验位是通过对m+k位复合码字进行奇偶校验而确定的。
其中:P1位负责校验海明码的第1、3、5、7、…(P1、D1、D2、D4、…)位,(包括P1自己)P2负责校验海明码的第2、3、6、7、…(P2、D1、D3、D4、…)位,(包括P2自己)
P3负责校验海明码的第4、5、6、7、…(P3、D2、D3、D4、…)位,(包括P3自己)
对m=4,k=3,偶校验的例子,只要进行式次偶性测试。
这些测试(以A、B、C表示)在图6所示各位的位置上进行。
图6?奇偶校验位置
因此可得到三个校验方程及确定校验位的三个公式:
A=B1⊕B3⊕B5⊕B7=0?得P1=D1⊕D2⊕D4
B=B2⊕B3⊕B6⊕B7=0?得P2=D1⊕D3⊕D4
C=B4⊕B5⊕B6⊕B7=0?得P3=D2⊕D3⊕D4
若四位信息码为1001,利用这三个公式可求得三个校验位P1、P2、P3值。
和海明码,?
上面是发送方的处理
在接收方,也可根据这三个校验方程对接收到的信息进行同样的奇偶测试:
A=B1⊕B3⊕B5⊕B7=0;
B=B2⊕B3⊕B6⊕B7=0;
C=B4⊕B5⊕B5⊕B7=0。
若三个校验方程都成立,即方程式右边都等于0,则说明没有错。
若不成立即方程式右边不等于0,说明有错。
从三个方程式右边的值,可以判断那一位出错。
例如,如果第3位数字反了,则C=0(此方程没有B3),A=B=1(这两个方程有B3)。
可构成二进数CBA,以A为最低有效位,则错误位置就可简单地用二进数CBA=011指出。
同样,若三个方程式右边的值为001,说明第1位出错。
若三个方程式右边的值为100,说明第4位出错。
海明码的码距应该是3,所以能纠正1位出错。
而奇偶校验码的码距才是2,只能发现1位出错,但不能纠正(不知道那一位错)。
无校验的码距是1,它出任何一位出错后还是合法代码,所以也就无法发现出错。
?
这是关于海明码的经典说法,即码距为3,可以发现2位,或者纠正1位错。
应满足
2k-1≥m+k。
?
但在清华的王爱英主编的《计算机组成与结构》(该书已成为国内的权威)中还提出了一种码距为4的海明码,可以发现2位,并且纠正1位错。
应满足2(k-1)≥m+k。
?
由于王爱英书上对这两种概念没有很仔细解释(特别对码距为3的海明码),过渡很突然。
有些书简单抄袭时没有仔细消化,所以出现一些概念错。
对于一般码距为3的海明码,应该是“可以发现2位,或者纠正1位错”,而不是“可以发现2位,并且纠正1位错”。
在试题中出现过类似的错误。
?
若四位信息码为1001,利用这三个公式可求得三个校验位P1、P2、P3值。
和海明码,如图7则表示了信息码为1001时的海明码编码的全部情况。
而图8中则列出了全部16种信息
(D1D2D3D4=0000~1111)的海明码。
图7?四位信息码的海明编码?
图8?未编码信息的海明码。