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

XYXZNB

(҂◔∀◐҂)☆万圣节快乐♬☆◥(ฅº₩ºฅ)◤ 不给糖就捣蛋 ☆(●⁰౪⁰●)没钱

 好的,在这个小节中我们会继续探讨数据校验的问题,我们会学习海明教研嘛,那海明教研嘛又可以称为汉民教研嘛,啊,这只是一个英译的问题,因为发明这个校验码的人叫理查德汉明,也正是因为它发明了海林嘛,对于信息纠错这个领域的贡献十分巨大,所以这个人获得了1968年的图灵奖,那这个小节中我们会首先介绍海明码的一个基本实现思想,然后再来介绍怎么构建海明码,怎么使用海明吗?来进行校验号,首先我们从上一小节学习的机构校验出发,那这种校验的思想很简单,对于N个有效的信息为我们只需要在手部或者尾部啊添加一个机校验位或者偶校验位吗对于偶来说这四个信息为我们需要在头部添加一个。方式构成奇偶校验吗?比如对于偶校验来说,这4个信息为我们需要在头部添加一个0,保证整体来看总共有个一那既有交验码的一个局限性,就是我们只能发现基数位的错误,并且我们知道他错了,但是我们无法确定是哪一位出了错,所以当我们发现错误的时候,呃我们没办法自动的把它进行修正,只能要求数据的传输方重新传送,可以这么来理解,由于既有校验的策略,我们只添加了一个叫,因为也就是一个比特的信息,而一个比特的冗余信息,显然它只能携带两种状态,也就是只能反馈对或者错这样的两种状态,而这个小节我们要学习的海民嘛,其实是基于偶教一样的一个拓展,大致的思路是这样的对歌有效的信息为我们会把它分为。学习的海民嘛,其实是基于偶教一样的一个拓展,大致的思路是这样的,对于单个有效的信息位,我们会把它分为K个分组,然后对K歌分组分别的进行,偶教练也就是说每一个分组会对应一个叫,因为那么最终我们会携带K歌教音位,而这K歌叫音位显然可以反映更多种状态的信息。甚至还可以学习的。多种状态的信息除了反馈对错之外,我们甚至还可以知道错在哪,是哪一位出了错,那这就是海民码的一个设计思想,那基于这个思路,我们接下来要探讨两个问题,第1个问题我们需要把这N个信息位分为多少个分组呢,然后第2个问题这N个信息位,我们应该怎么把他们分派到各个分组当中,好,那首先我们来探讨第1个问题需要设置多少个校验位,那我们假设信息位总共有N个让我们添加的冗余校验位有K个,现在我们所期待的效果是,这K个交易单位除了能反映并对错之外,还能指明我们到底是哪一个比特位出现了错误比特总表示这么多种状态而我们的海宁校验码整体来看应该是信息为佳校验位总共加起来。比特种功能表示2的K次方这么多种状态,而我们的阿海明校验码整体来看,应该是信息未加校验位,总共ng这么多个位,也就是说这N加K个V都有可能会出错,所以这2的K次方这种状态当中显然需要包含N加K种情况,那除了出错的这N加K种情况之外,还需要包含一种正确的状态,因此我们可以得到这样的一个不等式,2的K次方应该要大于等于N加K加E好,那对于这个不等式背后的逻辑,现在理解的不是很清楚,也没有关系,同学们只需要把它记住,能够用出来就可以了,总之我们需要通过这一步等式来确定啊,我们需要添加多少个校验位,比如如果有4个信息费,那么我们就只能取K给等于3才能满足这个式子那么那么二。通过这个不等式来确定啊,我们需要添加多少个校验费,比如如果有4个信息费,那么我们就只能取K=3才能满足这个式子,因为如果K=2的话,那么2的二次方等于4啊,右边是4+2+1是不满足大于等于这个条件的,因此对于4个信息费,我们至少需要添加三个教育运费,也就是把这些信息类分为三个分组好,那这张表给出了N和K的一个对应关系啊,大家可以简单的看一下,当然了。需要添加多少个校验费,比如如果有4个信息费,那么我们就只能取K=3才能满足这个式子,因为如果K=2的话,那么2的二次方等于4啊,右边是4+2+1是不满足大于等于这个条件的,因此对于4个信息位,我们至少需要添加三个校验位,也就是把这些信息类分为三个分组好,那这张表给出了N和K的一个对应关系啊,大家可以简单的看一下,当然。把K带几个值进去算一下就知道了,好那基于刚才的结论,如果说有4个信息位的话,那么我们可以确定我们要添加的校验位的数量K=3,也就是说最终我们生成的海民教育嘛,应该是4位再加三位总共7位这么多,那为了区分信息位和校验位,我们用第一到第4来表示这4个信息位,然后用P1~P3来表示这三个校验位,然后用H1~H7来分别对应最终的这7位汉密码,噢,那这些信息位和校验位应该放到什么位置呢?一个很容易想到的办法是把这三个校验位放到头部的位置,然后把4个信息位放到尾部的位置但是不能这么做他有一些特殊的规定所有的这些校验位。这些成分我们用第一到第四来表示这4个信息位,然后用P1~P3来表示这三个校验位,然后用H1~H7来分别对应最终的这7位韩名吗?噢,那这些信息位和校验位应该放到什么位置呢?一个很容易想到的办法是把这三个校验位放到头部的位置,然后把4个信息位放到尾部的位置,但是海民嘛不能这么做,它有一些特殊的规定,在海民教业嘛中,我们规定所有的这些校验位应该放在2的2-1次方这些位置上也就说p一p二p三这几个叫因为我们应该分别把它们放到一二四这几个位置还有一个吧有没有发现规律其实和我们二进制的一个全职的也就说p一p二p三这几个叫因为我们应该分别把它们放到一二四这几个位置还有一个吧有没有发现规律其实和我们二进制的一个全职的上升空间。如果还有一个教研员P4的话,那显然应该放到8,有没有发现规律,其实和我们二进制的一个全职的上升关系是啊,相符合的一24816, 所以我们可以把这些校验位它所放的位置看作是这个校验位,它所对应的某一种全值,那这个全值有什么用,我们一会儿再来解释,噢,总之PE放到第1个位置,然后P2放到2这个位置,P3要放到4这个位置,然后剩下的这些位置,我们再把它填入各个信息位哪,有空就填到哪,第一放到H3,然后第二第三第四就是这样的一个分部关系啊,那目前为止我们已经确定了我们需要添加三个校验位或者换一个角度来说,就是需要把这些信息为分为三个分组然后每个分组分别进行了。第三第四就是这样的一个分部关系啊,那目前为止我们已经确定了,我们需要添加三个校验位或者换一个角度来说,就是需要把这些信息为分为三个分组,然后每个分组分别进行进行偶教演,因此接下来我们应该确定一种规则,就是三个分组当中应该分别包含哪几个信息位,当我们确定了如何分组之后,那么与这个分组相对应的偶校验位的值是不是就很好确定了,好来看一下怎么做,我们需要把这些信息为他所处的位置这个序号用二进制的方式把它表示出来,比如说对于第一这个信息位来说,它所处的位置是三那么三的二进制表示应该是011北市买每个进程中是二。2+1=3好下一个信息,V是第二,它所处的位置是5,那么5用二进制表示应该是101,因为4+1=5,好,接下来第三它所处的位置是6,那么六用二进制表示应该是110,然后最后是第四,它处于7这个位置,用二进制表示就是鸡鸡鸡。这一期未来这几个位置所对应的信息位归为。3他所处的位置是6,那么又用二进制表示应该是110,然后最后是第四,他处于7这个位置,用二进制表示就是111好之前我们说过P1P2P3分别把它放到124这些位置,我们可以把它理解为某一种权重,那么这些权重和刚才我们们提到的这三个二进制数的权重是一一对应的,所以P1这个偶校验位,他所属的分组当中应该有哪些信息?为呢,我们只需要把末位为一的这几个信息位把它归为P一所属的分组就可以了,也就是3H5H7这几个位置,所对应的信息未归为同一个分组进行偶校验小节我们说过只需要把这个组里面的所有信息未进行异或运算就可以确定我们的皮衣应该取名还是。那这就是P1的一个计算方式,好,接下来第2个分组我们应该让它包含H3啊,H6和H7所对应的这几个信息位,也就是第一第三和第四,那把这几个信息位进行易货运算,所得到的结果就应该是这个分组的偶像,因为的一个值好,最后一个分组的确定方法也是一样的啊,H5H6H7也就是第二第三第四,他们从属于同一个分组把他们易货。其这几个位置所对应的信息位归为同一个分组进行偶教验,那上一小节我们说过,只需要把这个组里边的所有信息位进行异或运算,就可以确定我们的PE应该取0还是取一,那这就是P1的一个计算方式,好,接下来第2个分组我们应该让它包含X3啊,H6和H7所对应的这几个信息位,也就是第一第三和第四,那把这几个信息未进行异或运算,所得到的结果就应该是这个分组的偶校验位的一个值好,最后一个分组的确定方法也是一样的啊,H5H6H7也就是第二第三第四,他们从属于同一个分组,把他们易货可以得到某教研位的值好,还记得易货的运算规则吗如果说两个比特他们不一样的话那么以后得到相同那么得到的就是。第二第四啊,也就是011分别进行易货,首先是第一和第二的1或0和11货应该是等于1,然后这个1再和第4进行,1或1和11或应该是等于0,所以P1的值我们就确定了,应该是等于0,那换一个角度来说,就是这个分组当中信息位加上校验位,总共只有偶数个一好,接下来对于第2个和第3个分组的偶校验原理其实也是类似的就不再赘述,那基础不好的同学可以暂停一下来理解一下,好那到目前为止我们已经确定了P1P2P3的值应该分别是010,我们就确定了整个海明校验码的一个值,应该是这样的一个状态接下我们就可以利用这个还进行检错和纠错怎么检测出错误呢其实就是把各个分组那个。好,接下来我们就可以利用这个海明码来进行检测和纠错,那怎么检测出错误呢?其实就是把各个分组内的啊这些二进制比特币进行一个易货运算,也就是对各个分组进行偶教验,如果说这个分组内没有出错的话,那么呃进行易货运算得到的结果应该是0,对吧?好来具体看一下,如果现在接收方接收到的数据没有发生任何一个比特位的错误,那么大家可以暂停来自己验证一下,我们根据刚才确定的这三个分组,对每个分组内的这些比特位依次进行异或运算,因为每个分组都有偶数个一,所以易货之后肯定都是000,这是没有出错的情况啊,那再来看一个出错的情况,如果说接收方接收到的数据啊,H2这一位发生了错误也是p二这个叫因为从一变成。接收方接收到的数据啊,H2这一位发生了错误也就是P2,这个叫因为从1变成了0,那么第1个分组进行抑或得到0,第2个分组中由于P2发生了跳变,所以导致第2个分组中现在只有奇数个一,那么易货出来的结果就是一而第3个分组也是一样的,没有任何一个数据发生跳变,因此易货的结果应该是0,好,现在我们根据S1~S3,这几个V就可以确定,应该是010这个胃出血我们求的只是比如说一零的话那么就说明出错的位置应该是。给大家一个图,你就能理解,为什么能呈现出这样的规律了,这个图里边每一个圆圈表示的是从属于同一个分组的比特位,P1第一第二第四从属于同一个分组,P2,第一第三第四从属于第2个分组,而这三个分组相互之间是有交集的,所以来看一下,如果说第三这个信息未发生了跳变,那么由于第2个分组和第3个分组都包含了第三这个信息未因此第三的跳变会导致S2和S3算出来的结果都是一队吧,而S1当中所有的这些信息为都没有挑便,因此他算出来的结果肯定是0,那么我们最终得到的S3~S1结果不就是110吗?这个数等于6,刚好就指向了D3所对应的位置在看之前这个。那么P2它只从属于第2个分组,因此它只会影响S2的值,而我们得到的结果,101刚好又是指向了P2所处的位置,H2再来一个例子,如果说是第4发生了跳变,那么你看一下第四它从属于所有的这些分组,因此所有的分组的偶叫宴或者说这个异或运算的结果,肯定都会被影响为依,而三个一对应的十进制不刚好就是7猫,同样也是指向了第四他所处的这个位置,好那这就是海明码的一个纠错原理,大家可以再结合这个图好好体会一下噢,那接下来要补充一些大家做题的时候可能会遇到的情况,有的题目当中对于信息为校验位的一个编号,可能是从小到大这么编的,而我们刚才讲的是从大到小那对于这种题目做法是一模一样的。左右方向换了而已,题目的做法上没有任何区别啊,另外一个要补充的点是,海明马具有一个比特币的纠错能力,还有两个比特币的检测能力,但是如果使用之前我们提出的这个方案的话,其实在检错和纠错的时候有可能会发生一些问题来看这样的一个例子,假设我们在传输的过程当中啊,这儿得到的这串海明码P1和P2,这两个位发生了跳变,那么得到的结果就是S1=1,S2=1,S3=0,那么按照我们之前定下的规则,011对应的10进制是3,那这是否说明了H3这个位置出现了错误呢?显然这个结论是不对的,此时我们是发生了两个比特币的跳变之前提出的方案我们是没有办法区分到底是一个品牌的错误还是。这个结论是不对的,此时我们是发生了两个比特币的跳变,也就是说基于之前提出的方案,我们是没有办法区分,到底是一个比特币的错误还是两个比特币的错误噢,所以为了解决这个问题实际很迷茫,在使用的时候通常还会在最手部加上一个全教验位,那顾名思义所谓全教练,就是对我们之前得到的这一整个整体全部的这些比特信息统一的进行一次偶教练,所以看一下之前这个例子当中总共有一个两个三个1,所以这个全校因为我们应该把它设为一保证整体来看有偶数个一好,那天加了这个全校验位之后啊,如果我们求得的S1~S3全部是0,并且全体的偶校验是成功的,那么就说明此事没有发生错误如果s三。错误,而如果S1~S3不等于0,并且全体的偶校验失败,那么说明有移位的错误,我们只需要把它纠正就可以,比如P1发生了挑边,那么最终我们S1~S3应该是001也就是指向了一这个位置,而由于只有P1这样一个位发生了跳变,就导致整体的偶叫一样是失败的,那这个时候就说明H1这个way发生了错误,我们只需要把它从一改为0就可以不需要要求发送方重新发送这个数据,好再来看,如果说有两个位发生了错误啊,就像刚才那个例子一样,P1P2同时发生了错误,那么S1~S3得到的结果应该是011,但是这种情况下整体的偶教宴是会成功的,所以此时就说明是发生了两个比特类的错误,那由于我们没有办法确定这两个比特币错在哪儿所以我们。就说明是发生了两个比特位的错误,那由于我们没有办法确定这两个比特位错在哪,所以我们就需要要求对方重新传送这些数据,那大家在课后习题里也会遇到这种全校验位的情况好的,这个小节中我们学习了海明教研嘛,在所有的数据教研方式当中,海明码是比较难理解的,但是如果我们从它的基本思想出发,就能更方便的理解,为什么海明马要这么设计,本质上它就是把所有的啊信息位进行分组,然后每一个组都进行较易典,而每一个分组会对应一个校验位,所以如果有K个分组的话,自然就会有K个校验位,对于海明码的求解,我们首先需要确定校验位的位数,接下来就要确定各个校验位,还有信息位的分布,那所有的这些校验位应该是分布在呃编号的,对124 86这些个位置我们。一个校验位还有信息位的分布,那所有的这些校验位应该是分布在呃,编号为124 86这些个位置,我们可以把这些校验位的位置信息理解为某一种权重这些权重信息可以帮助我们记忆和理解,当我们在进行分组的时候,这个分组规则是怎么制定的?每一个校验位所属的分数都应该确保他们拥有欧束为一那在进行检错纠错的时候,我们就可以根据各个分组是否满足拥有偶数合一这样的一个条件来判断哪些分组出现了问题,那根据各个分组偶教验的一个结果,我们就可以来判断到底是哪个位置出现了错误之后的一个检测能力为了区分到底是一位错通常还会在最高位。一个小节,最后我们也补充了海明马的一个纠错和检错能力,只不过为了区分到底是一位错还是两位错,我们通常还会在最高位加上一个全校验位,保证海密码的整体由偶数合一那海绵码,这个部分的内容既是既足的一个考点,同时也是计算机网络的一个考点,所以学会了这个知识点能够有一石二鸟的作用,好的,那接下来同学们再根据课后习题自己来动手做一遍,那以上就是这小节的全部内容。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值