欢迎来到天天文库
浏览记录
ID:39393615
大小:18.51 KB
页数:6页
时间:2019-07-02
《海明 校验 码数据 校验 码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、海明校验码数据校验码版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明海明校验码数据校验码摘要:在计算机网络与通信及计算机内部常涉及到数据通信,为了保证传输的数据的正确性,常涉及到传输数据的校验与纠错,本文旨在归纳比较各种常用的数据校验码,达到对数据校验的进一步认识了解,便于在实际中运用。数据校验:计算机系统中的数据,在读写、存取和传送的过程中可能产生错误。为了减少和避免这类错误,一方面是精心设计各种电路,提高计算机硬件的可靠性,另一方面是在数据编码上找出路,即采用某种编码方法,通过少量的附加电路,使之能发现某些错误,甚至能确定出错位置,进
2、而实现自动改错的能力。通俗的说,就是为保证数据的完整性,用一种指定的算法对原始数据计算出的一个校验值。接收方用同样的算法计算一次校验值,如果和随数据提供的校验值一样,就说明数据是完整的。编码纠错理论:任何一种编码是否具有检测能力和纠错能力,都与编码的最小距离有关。所谓的编码最小距离是指在一种编码系统中,任意两组合法码之间的最少二进制位数的差异。数据校验码:数据校验码是一种常用的带有发现某些错误或自动改错能力的数据编码方法。常用的数据校验码:一,奇偶校验码:奇偶校验码是一种开销最小,能发现数据代码中一位出错情况的编码。常用于存储器读写检查,或ASCII字符
3、传送过程中的检查。实现原理:使码距(两个码组对应位上数字的不同位的个数称为码组的距离,简称码距)由增加到2。实现的具体方法:通常为一个字节补充一个二进制位,称为校验位,用设置校验位的值为0或1,使字节的8位和该校验位含有1值的个数为奇数或偶数。在使用奇数个1的方案进行校验时,称为奇校验;反之,称为偶校验。例如ASCII码使7位或8位二进制数组合来表示128或256种可能的字符。标准ASCII码也叫基础ASCII码,使用7位二进制数来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符。在标准ASCII中,其最高位(b7)用作
4、奇偶校验位;具体的实现代码:#includemain(){inti,j,count=0,e=0,f=0,g,m,n;chara[100][100];scanf(%d%d,n,m);getchar();//用来消除回车for(i=0;i{scanf(%s,a[i]);a[i][m]='[message]';}for(i=0;i{for(j=0;j{if(a[i][j]=='1')count++;}if(count%2==1){e++;count=0;}for(j=0;j{for(i=0;i{if(a[i][j]=='1')count++;}if(count
5、%2==1){f++;count=0;}g=ef?e:f;printf(e=%df=%dg=%d,e,f,g);}二,循环冗余校验码(CRC)CRC(cyclicredundancycheck)码可以发现并纠正信息存储或传送过程中连续出现的多位错误,因此在磁介质存储和计算机之间通信方面得到广泛应用。CRC码用到模2运算:1)模2加减:0+1=1;0+0=0;1+0=1;1+1=0;2)模2乘:按模2加求部分积之和;3)模2除:按模2减求部分余数;实现原理:生成CRC码:CRC码是用多项式M(x)*xr除以称为G(x)(产生校验的多项式又称为生成多项式)所
6、得余数作为校验位的(模2运算)。为了得到r位余数(校验位),G(x)必须是r+1位。CRC的译码与纠错:接收到的循环校验码用约定的生成多项式G(x)去除,如果码字无误则余数应为0,如有一位出错,则余数不为0,不同位数出错余数不同。对照相应的出错模式可以找到相应的出错位。适用范围:CRC-12码通常用来传送6-bit字符串;CRC-16及CRC-CCITT码则用是来传送8-bit字符。CRC-32:硬盘数据,网络传输等应用例子:rar,以太网卡芯片、MPEG解码芯片中三,海明校验码由RichardHamming于1950年提出、目前还被广泛采用的一种很有效
7、的校验方法,是只要增加少数几个校验位,就能检测出二位同时出错、亦能检测出一位出错并能自动恢复该出错位的正确值的有效手段,后者被称为自动纠错。基本思想:将有效信息按某种规律分成若干组,每组安排一个校验位,做奇偶测试,就能提供多位检错信息,以指出最大可能是哪位出错,从而将其纠正。实质上,海明校验是一种多重校验。具体实现:生成有效码;步骤一:求校验位数k;设欲检测的二进制代码为n位,为使其具有纠错能力,需增加k位检测位,组成n+k位的代码。为了能准确对错误定位及指出代码没错,新增添的检测位数k应满足:2k=n+k+1;由此公式可由的欲检测的二进制代码位数n求得
8、相应的所需的校验位数k;步骤二:求被送代码(有效信息)所在的位置设n+k位代码自
此文档下载收益归作者所有