海明码例题详细步骤
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
海明码例题详细步骤
咱们知道,发送端在发送数据给接收端时,在传输链路中有可能受到干扰致使数据传输错误,所以在接受端咱们须要对接收到的数据进行检验,验证数据是否正确。
若是数据发生了错误,接收端会选择对数据进行纠错或者要求发送端进行重发。
1、奇偶校验。
在计算机发展的早期咱们常采用的校验方法是奇偶校验,用1个比特位来标记校验结果。
因此当咱们的数据有n 位时,要传输给接收端的数据有n+1位。
采用奇校验时,若所要传输的数据含有奇数个1,则校验位为0;反之,含有偶数个1,则校验位为1。
采用偶校验时,若所要传输的数据含有偶数个1,则校验位为0;反之,含有奇数个1,则校验位为1。
学习奇偶校验功能简单,实现起来容易,可是它只能发现数据发生了错误,没法肯定是哪一个位置发生了错误,只能要求发送方重发,且当数据发生了偶数个错误时,奇偶检验没法发现错误,也就是说它没有纠错功能,所以咱们采用更为先进的海明码。
2、海明码。
海明码不只具备纠错功能,还能根据验算过程判断出发
生错误的位置。
下面让咱们来看看海明码的计算原理。
(1)海明码有三个重要性质:
①假设数据位为n位,校验位有k位,则海明码有n+k 位,且n和k需知足2−1≥n+k等式(能够用2k−1>n简化计算)。
如:当n=8时,则k=4;当n=16时,则k=5。
②用符号D表明数据位,P表明校验位,H表明海明码,则P=2,也就是说第i个校验位在海明码的第2。
当肯定好校验位在海明码的位置以后,剩下的位置则由数据位进行填充。
根据①和②,咱们即可以肯定数据位为n时,校验位k 的值及海明码的格式(这里以数据位为8位举例):
根据①,由于n=8且2k-1>n,因此k=4,因此海明码有8+4=12位。
根据②,能够以为4个校验位P1、P2、P3、P4分别在海明码的H1、H2、H4、H8的位置上,如上图所示。
③每一位海明码都会被校验到,其中,被校验的海明码它的下标等于参与校验的全部检验码下标之和(对应存放D
时),而校验位由自身校验(对应存放P时)。
根据③咱们能够肯定每一位海明码,它是由哪些校验码进行校验的,而这些校验码便构成了该海明码的校验码组,以下图所示。
很容易看出P所在的海明码的校验位组都是校验位,而D所在的海明码的校验位组遵循“被校验的海明码它的下标等于参与校验的全部检验码下标之和”。
如H12中的校验位组是P3和P4,是由于12=8+4,即H12的校验位组由H8和H4组成。
海明码的校验方式。
在采用偶检验时,各检验位的值等于含有该检验位的数据位的异或运算结果。
补充:异或运算的规则是:
0⨁0=0;0⨁1=1
1⨁1=0;1⨁0=1
至此发送端就肯定完每一位海明码的值应该为0仍是1了。
那么接收端要如何肯定收到的海明码是否正确呢?如果
不正确时,其错误的位置又要如何肯定?
3、海明码的检错及纠错。
接收端在接收到海明码后,对将校验位P与其相对应的数据位D进行异或运算,并根据运算结果生成编码结果G4G3G2G1(这里仍是以数据位8位时举例,如果16位,则结果为G5G4G3G2G1)。
注意观察P和后面的D组数据之间的关系,若是进行偶检验,没有错误时,G4G3G2G1应该全为0(奇检验时无错全为1)。
不全为0则说明发生了错误,且G4G3G2G1的值化成十进制值m就指出了海明码的第m个位置出现了错误,如G4G3G2G1=1000说明海明码H8出现了错误。