ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:24.62KB ,
资源ID:5473940      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5473940.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(奇偶校验码的例子.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

奇偶校验码的例子.docx

1、奇偶校验码的例子奇偶校验码的例子【篇一:奇偶校验码的例子】奇偶校验是一种校验代码传输正确性的方法.根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验.采用奇数的称为奇校验,反之,称为偶校验.采用何种校验是事先规定好的.通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数.若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性.与一段信息关联的冗余信息.在windowsntserver中,带奇偶校验的带区集意味着每行有一个附加的奇偶校验带区.因此,必须使用至少三个(而不是两个)磁盘才能考虑该附加的奇偶校验信息.奇偶校验带区包含

2、该带区内数据的xor(称为排它性“或”的布而操作).重新生成失败的磁盘时,windowsntserver将使用这些带区中与完好磁盘上数据关联的奇偶校验信息重新在失败盘上创建数据.请参阅容错;带区集;带奇偶校验的带区集 奇偶校验能够检测出信息传输过程中的部分误码(1位误码能检出,2位及2位以上误码不能检出),同时,它不能纠错.在发现错误后,只能要求重发.但由于其实现简单,仍得到了广泛使用.为了能检测和纠正内存软错误,首先出现的是内存“奇偶校验”.内存中最小的单位是比特,也称为“位”,位有只有两种状态分别以1和0来标示,每8个连续的比特叫做一个字节(byte).不带奇偶校验的内存每个字节只有8位,

3、如果其某一位存储了错误的值,就会导致其存储的相应数据发生变化,进而导致应用程序发生错误.而奇偶校验就是在每一字节(8位)之外又增加了一位作为错误检测位.在某字节中存储数据之后,在其8个位上存储的数据是固定的,因为位只能有两种状态1或0,假设存储的数据用位标示为1、1、1、0、0、1、0、1,那么把每个位相加(111001015),结果是奇数.对于偶校验,校验位就定义为1,反之则为0;对于奇校验,则相反.当cpu读取存储的数据时,它会再次把前8位中存储的数据相加,计算结果是否与校验位相一致.从而一定程度上能检测出内存错误,奇偶校验只能检测出错误而无法对其进行修正,同时虽然双位同时发生错误的概率相

4、当低,但奇偶校验却无法检测出双位错误.编辑本段范例串行数据在传输过程中,由于干扰可能引起信息的出错,例如,传输字符e,其各位为:0100,0101=45h d7 d0 由于干扰,可能使位变为1,(为什么不变0?)这种情况,我们称为出现了“误码”.我们把如何发现传输中的错误,叫“检错”.发现错误后,如何消除错误,叫“纠错”.最简单的检错方法是“奇偶校验”,即在传送字符的各位之外,再传送1位奇/偶校验位.可采用奇校验或偶校验.奇校验:所有传送的数位(含字符的各数位和校验位)中,“1”的个数为奇数,如:1 0110,0101 0 0110,0001 偶校验:所有传送的数位(含字符的各数位和校验位)中

5、,“1”的个数为偶数,如:1 0100,0101 0 0100,0001 奇偶校验能够检测出信息传输过程中的部分误码(1位误码能检出,2位及2位以上误码不能检出),同时,它不能纠错.在发现错误后,只能要求重发.但由于其实现简单,仍得到了广泛使用.有些检错方法,具有自动纠错能力.如循环冗余码(crc)检错等.校验方法奇校验:就是让原有数据序列中(包括你要加上的一位)1的个数为奇数 1000110(0)你必须添0这样原来有3个1已经是奇数了所以你添上0之后1的个数还是奇数个.偶校验:就是让原有数据序列中(包括你要加上的一位)1的个数为偶数 1000110(1)你就必须加1了这样原来有3个1要想1的

6、个数为偶数就只能添1了.编辑本段双向奇偶校验2.5.2 奇偶校验码 奇偶校验码是一种通过增加冗余位使得码字中1的个数恒为奇数或偶数的编码方法,它是一种检错码。在实际使用时又可分为垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验等几种。1.垂直奇偶校验 垂直奇偶校验又称为纵向奇偶校验,它是将要发送的整个信息块分为定长p位的若干段(比如说q段),每段后面按1的个数为奇数或偶数的规律加上一位奇偶位,如图2.19所示。问位信息(i11,i21, ,ipl,i12, ,ipq)中,每p位构成一段(即图中的一列),共有q段(即共有q列。每段加上一位奇偶校验冗余位,即图中的rio编码规则为 注意:此间的+指的是

7、模二加,也即异或运算。 图中箭头给出了串行发送的顺序,即逐位先后次序为i11,i21, ,ip1,r1,i12, ,ipa,r2, ,儿, ,i间,rq。在编码和校验过程中,用硬件方法或软件方法很容易实现上述连续半加运算,而且可以边发送边产生冗余位;同样,在接收端也可边接收边进行校验后去掉校验位。 垂直奇偶校验方法的编码效率为r=p/(p+1)。通常,取一个字符的代码为一个信息段,这种垂直奇偶校验有时也称为字符奇偶校验。例如,在8位字符代码(即用8位二进制数位表示一个字符)中,p=8,编码效率便为8/9。 垂直奇偶校验方法能检测出每列中的所有奇数位错,但检测不出偶数位的错。对于突发错误来说,奇

8、数位错与偶数位错的发生概率接近于相等,因而对差错的漏检率接近于1/20。2.水平奇偶校验 为了降低对突发错误的漏检率,可以采用水平奇偶校验方法。水平奇偶校验又称为横向奇偶校验,它是对各个信息段的相应位横向进行编码,产生一个奇偶校验冗余位,如图2.20所示,编码规则为 若每个信息段就是一个字符的话,这里的q就是发送的信息块中的字符数。 水平奇偶校验的编码效率为r=q/(q+1)。 水平奇偶校验不但可以检测出各段同一位上的奇数位错,而且还能检测出突发长度 p的所有突发错误。因为按发送顺序从图2.20可见,突发长度p的突发错误必然分布在不同的行中,且每行一位,所以可以检出差错,它的漏检率要比垂直奇偶

9、校验方法低。但是实现水平奇偶校验时,不论采用硬件方法还是软件方法,都不能在发送过程中边产生奇偶校验冗余位边插入发送,而必须等待要发送的全部信息块到齐后,才能计算冗余位,也就是一定.要使用数据缓冲器,因此它的编码和检测实现起来都要复杂一些。3.水平垂直奇偶校验 同时进行水平奇偶校验和垂直奇偶校验就构成水平垂直奇偶校验,也称为纵横奇偶校实验,如图2.21所示。若水平垂直都采用偶校验,则 水平垂直奇偶校验的编码效率为r=pq/(p+1)(q+1)。. 水平垂直奇偶校验能检测出所有3位或3位以下的错误(因为此时至少在某一行或某一列上有一位错)、奇数位错、突发长度 =p+1的突发错以及很大一部分偶数位错

10、。测量表.明,这种方式的编码可使误码率降至原误码率的百分之一到万分之一。 水平垂直奇偶校验不仅可检错,还可用来纠正部分差错。例如数据块中仅存在1位错时,便能确定错码的位置就在某行和某列的交叉处,从而可以纠正它.crc的工作方法在发送端产生一个循环冗余码,附加在信息位后面一起发送到接收端,接收端收到的信息按发送端形成循环冗余码同样的算法进行校验,若有错,需重发。2.循环冗余码的产生与码字正确性检验例子。crc校验码的算法分析crc校验码的编码方法是用待发送的二进制数据t(x)除以生成多项式g(x),将最后的余数作为crc校验码。其实现步骤如下:(1) 设待发送的数据块是m位的二进制多项式t(x)

11、,(2) 生成多项式为r阶的g(x)。在数据块的末尾添加r个0,(3)数据块的长度增加到m+r位,(4) 对应的二进制多项式为 。(5) 用生成多项式g(x)去除 ,(6) 求得余数为阶数为r-1的二进制多项式y(x)。此二进制多项式y(x)就是t(x)经过生成多项式g(x)编码的crc校验码。(7) 用 以模2的方式减去y(x),(8) 得到二进制多项式。就是包含了crc校验码的待发送字符串。从crc的编码规则可以看出,crc编码实际上是将代发送的m位二进制多项式t(x)转换成了可以被g(x)除尽的m+r位二进制多项式 ,所以解码时可以用接受到的数据去除g(x),如果余数位零,则表示传输过程

12、没有错误;如果余数不为零,则在传输过程中肯定存在错误。许多crc的硬件解码电路就是按这种方式进行检错的。同时 可以看做是由t(x)和crc校验码的组合,所以解码时将接收到的二进制数据去掉尾部的r位数据,得到的就是原始数据。为了更清楚的了解crc校验码的编码过程,下面用一个简单的例子来说明crc校验码的编码过程。由于crc-32、crc-16、ccitt和crc-4的编码过程基本一致,只有位数和生成多项式不一样。例1.已知:信息码:110011 信息多项式:k(x)=x5+x4+x+1生成码:11001 生成多项式:g(x)=x4+x3+1(r=4)求:循环冗余码和码字。解:1)(x5+x4+x

13、+1)*x4的积是 x9+x8+x5+x4 对应的码是1100110000。2)积g(x)(按模二算法)。由计算结果知冗余码是1001,码字就是1100111001。1 0 0 0 0 1 q(x)g(x) 1 1 0 0 1 )1 1 0 0 1 1 0 0 0 0 f(x)*xr1 1 0 0 1 ,1 0 0 0 01 1 0 0 11 0 0 1 r(x)(冗余码)例2.已知:接收码字:1100111001 多项式:t(x)=x9+x8+x5+x4+x3+1生成码 : 11001 生成多项式:g(x)=x4+x3+1(r=4)求:码字的正确性。若正确,则指出冗余码和信息码。解:1)用字

14、码除以生成码,余数为0,所以码字正确。1 0 0 0 0 1 q(x)g(x) 1 1 0 0 1 )1 1 0 0 1 1 1 0 0 1 f(x)*xrr(x)1 1 0 0 1 ,1 1 0 0 11 1 0 0 10 s(x)(余数)2)因r=4,所以冗余码是:11001,信息码是:1100113.循环冗余码的工作原理循环冗余码crc在发送端编码和接收端校验时,都可以利用事先约定的生成多项式g(x)来得到,k位要发送的信息位可对应于一个(k-1)次多项式k(x),r位冗余位则对应于一个(r-1)次多项式r(x),由r位冗余位组成的n=k+r位码字则对应于一个(n-1)次多项式t(x)=

15、xr*k(x)+r(x)。4.循环冗余校验码的特点1)可检测出所有奇数位错;2)可检测出所有双比特的错;3)可检测出所有小于、等于校验位长度的突发错。什么是奇偶校验对数据传输正确性的一种校验方法。在数据传输前附加一位奇校验位,用来表示传输的数据中1的个数是奇数还是偶数,为奇数时,校验位置为0,否则置为1,用以保持数据的奇偶性不变。例如,需要传输11001110,数据中含5个1,所以其奇校验位为0,同时把110011100传输给接收方,接收方收到数据后再一次计算奇偶性,110011100中仍然含有5个1,所以接收方计算出的奇校验位还是0,与发送方一致,表示在此次传输过程中未发生错误。奇偶校验就是

16、接收方用来验证发送方在传输过程中所传数据是否由于某些原因造成破坏。具体方法如下:奇校验:就是让原有数据序列中(包括你要加上的一位)1的个数为奇数1000110(0)你必须添0这样原来有3个1已经是奇数了所以你添上0之后1的个数还是奇数个。偶校验:就是让原有数据序列中(包括你要加上的一位)1的个数为偶数1000110(1)你就必须加1了这样原来有3个1要想1的个数为偶数就只能添1了。 大家一定会问,如何计算奇偶性呢,在计算机内有一种特殊的运算它遵守下面的规则:1+1=0; 1+0=1; 0+1=1; 0+0=0;我们把传送过来的1100111000逐位相加就会得到一个1,应该注意的的,如果在传送

17、中1100111000变成为0000111000,通过上面的运算也将得到1,接收方就会认为传送的数据是正确的,这个判断正确与否的过程称为校验。而使用上面方法进行的校验称为奇校验,奇校验只能判断传送数据中奇数个数据从0变为1或从1变为0的情况,对于传送中偶数个数据发生错误,它就无能为力了。odd parity(奇校验),校核数据完整性的一种方法,一个字节的8个数据位与校验位(parity bit )加起来之和有奇数个1。校验线路在收到数后,通过发生器在校验位填上0或1,以保证和是奇数个1。因此,校验位是0时,数据位中应该有奇数个1;而校验位是1时,数据位应该有偶数个1。如果读取数据时发现与此规则

18、不符,cpu会下令重新传输数据。奇/偶校验(ecc)是数据传送时采用的一种校正数据错误的一种方式,分为奇校验和偶校验两种。如果是采用奇校验,在传送每一个字节的时候另外附加一位作为校验位,当实际数据中 1 的个数为偶数的时候,这个校验位就是 1 ,否则这个校验位就是 0 ,这样就可以保证传送数据满足奇校验的要求。在接收方收到数据时,将按照奇校验的要求检测数据中 1 的个数,如果是奇数,表示传送正确,否则表示传送错误。同理偶校验的过程和奇校验的过程一样,只是检测数据中 1 的个数为偶数。【篇三:奇偶校验码的例子】计算机系统运行时,各个部之间要进行数据交换. 为确保数据在传送过程正确无误,常使用检验

19、码. 我们常使用的检验码有三种.分别是奇偶校验码、海明校验码和循环冗余校验码(crc) 。奇偶校验码奇偶校验码最简单,但只能检测出奇数位出错.如果发生偶数位错误就无法检测. 但经研究是奇数位发生错误的概率大很多.而且奇偶校验码无法检测出哪位出错.所以属于无法矫正错误的校验码。奇偶校验码是奇校验码和偶校验码的统称.它们都是通过在要校验的编码上加一位校验位组成. 如果是奇校验加上校验位后,编码中1的个数为奇数个。如果是偶校验加上校验位后,编码中1的个数为偶数个。例:原编码 奇校验 偶校验00000000 1 0000 000100010 0 0010 111001100 1 1100 010101

20、010 1 1010 0如果发生奇数个位传输出错,那么编码中1的个数就会发生变化.从而校验出错误,要求从新传输数据。目前应用的奇偶校验码有3种.水平奇偶校验码对每一个数据的编码添加校验位,使信息位与校验位处于同一行.垂直奇偶校验码把数据分成若干组,一组数据排成一行,再加一行校验码.针对每一行列采用奇校验 或 偶校验例: 有32位数据1010010100110110 11001100 10101011垂直奇校验垂直偶校验1010010110100101数据0011011000110110110011001100110010101011101010110000101111110100校验水平垂直奇

21、偶校验码就是同时用水平校验和垂直校验例:奇校验奇水平偶校验 偶水平101001011101001010 数据00110110100110110011001100111001100 010101011010101011 1000010110111101001 校验海明校验码海明码也是利用奇偶性来校验数据的.它是一种多重奇偶校验检错系统,它通过在数据位之间插入k个校验位,来扩大码距,从而实现检错和纠错.设原来数据有n位,要加入k位校验码.怎么确定k的大小呢?k个校验位可以有pow(2,k) (代表2的k次方) 个编码,其中有一个代表是否出错.剩下pow(2,k)-1个编码则用来表示到底是哪一位出错

22、. 因为n个数据位和k个校验位都可能出错,所以k满足pow(2,k)-1 = n+k。设 k个校验码为 p1,p2.pk,n个数据位为d0,d1.dn 产生的海明码为 h1,h2.h(n+k) 。如有8个数据位,根据pow(2,k)-1 = n+k可以知道k最小是4。那么得到的海明码是:h12 h11 h10 h9 h8 h7 h6 h5 h4h3 h2 h1d7 d6d5 d4 p4 d3 d2 d1 p3 d0 p2 p1然后怎么知道pi校验哪个位呢.自己可以列个校验关系表海明码 下标校验位组h1(p1) 1p1h2(p2) 2p2h3(d0) 1+2p1,p2h4(p3) 4p3h5(d

23、1) 1+4p1,p2h6(d2) 2+4p2,p3h7(d3) 1+2+4p1,p2,p3h8(p4) 8p4h9(d4) 1+8p1,p4h10(d5) 2+8p2,p4h11(d6) 1+2+8p1,p2,p4h12(d7) 4+8p3,p4从表中可以看出p1校验 p1,d0,d1,d3,d4,d6p2校验 p2,d0,d1,d2,d3,d5,d6p3校验 p3,d2,d3,d7p4校验 p4,d4,d5,d6,d7其实上表很有规律很容易记,要知道海明码hi由哪些校验组校验,可以把i化成二进制数数中哪些位k是1,就有哪些pk校验如h7 7=0111 所以由p1,p2,p3 h1111=1

24、011 所以由p1,p2,p4 h3 3=0011 所以由p1,p2那看看pi的值怎么确定,如果使用偶校验,则p1=d0 xor d1 xor d3 xor d4 xord6p2=d0 xor d1 xor d2 xor d3 xord5 xor d6p3=d1 xor d2 xor d3 xor d7p4=d4 xor d5 xor d6 xor d7其中xor是异或运算,奇校验的话把偶校验的值取反即可.那怎么校验错误呢.其实也很简单. 先做下面运算.g1 = p1 xor d0 xor d1 xor d3 xord4 xor d6g2 = p2 xor d0 xor d1 xor d2 x

25、ord3 xor d5 xor d6g3 = p3 xor d1 xor d2 xor d3 xord7g4 = p4 xor d4 xor d5 xor d6 xord7循环冗余校验码crc码利用生成多项式为k个数据位产生r个校验位进行编码,其编码长度为n=k+r所以又称(n,k)码. crc码广泛应用于数据通信领域和磁介质存储系统中.crc理论非常复杂,一般书就给个例题,讲讲方法.现在简单介绍下它的原理:在k位信息码后接r位校验码,对于一个给定的(n,k)码。可以证明(数学高手自己琢磨证明过程)存在一个最高次幂为n-k=r 的多项式g(x),根据g(x)可以生成k位信息的校验码,g(x)被

26、称为 生成多项式用c(x)=c(k-1)c(k-2).c0表示k个信息位,把c(x)左移r位,就是相当于c(x)*pow(2,r) 给校验位空出r个位来了.给定一个 生成多项式g(x),可以求出一个校验位表达式r(x)。c(x)*pow(2,r) / g(x) = q(x) + r(x)/g(x)用c(x)*pow(2,r)去除生成多项式g(x)商为q(x)余数是r(x)。所以有c(x)*pow(2,r) = q(x)*g(x)+ r(x)c(x)*pow(2,r) +r(x)就是所求的n位crc码,由上式可以看出它是生成多项式g(x)的倍式.所以如果用得到的n位crc码去除g(x)如果余数是

27、0,就证明数据正确.否则可以根据余数知道出错位.在crc运算过程中,四则运算采用 mod 2运算(后面介绍),即不考虑进位和借位.所以上式等价于c(x)*pow(2,r) + r(x) = q(x)*g(x)继续前先说下基本概念吧.1.多项式和二进制编码x的最高次幂位对应二进制数的最高位.以下各位对应多项式的各幂次.有此幂次项为1,无为0. x的最高幂次为r时, 对应的二进制数有r+1位 例如g(x)=pow(x,4) + pow(x,3) + x+ 1 对应二进制编码是 11011生成多项式是发送方和接受方的一个约定,也是一个二进制数,在整个传输过程中,这个数不会变.在发送方利用 生成多项式

28、对信息多项式做模2运算生成校验码.在接受方利用 生成多项式 对收到的 编码多项式做模2运算校验和纠错.生成多项式应满足:a.生成多项式的最高位和最低位必须为1b.当信息任何一位发生错误时,被生成多项式模2运算后应该使余数不为0c.不同位发生错误时,应该使余数不同.d.对余数继续做模2除,应使余数循环.生成多项式很复杂,不过不用我们生成。下面给出一些常用的生成多项式表二进制码(自己根据多项式和二进制编码 的介绍转)7 4 1011 或11017 3 11011 或1011115 11 101131 26 1001013.模2运算a.加减法法则+/- 0 = 0+/- 1 = 1+/- 0 = 1

29、+/- 1 = 0注意:没有进位和借位b.乘法法则利用模2加求部分积之和,没有进位c.除法法则利用模2减求部分余数,没有借位,每商1位则部分余数减1位,余数最高位是1就商1,不是就商0,当部分余数的位数小于余数时,该余数就是最后余数.例 11101011)1100000101111101011101010110010(每商1位则部分余数减1位,所以前两个0写出)0000010(当部分余数的位数小于余数时,该余数就是最后余数)最后商是1110余数是010好了说了那么多没用的理论.下面讲下crc的实际应用.例:给定的生成多项式g(x)=1011, 用(7,4)crc码对c(x)=1010进行编码.

30、由题目可以知道下列的信息:c(x)=1010,n=7,k=4,r=3,g(x)=1011c(x)*pow(2,3)=1010000 c(x)*pow(2,3) / g(x) = 1001 + 11/1011所以r(x)=011.所以要求的编码为1010011例2: 上题中,数据传输后变为1000011,试用纠错机制纠错.1000011 / g(x) = 1011 + 110/1011不能整除,所以出错了.因为余数是110.查1011出错位表可以知道是第5位出错.对其求反即可.冗余码的计算方法是,先将信息码后面补0,补0的个数是生成多项式最高次幂;将补零之后的信息码除以g(x),注意除法过程中所

31、用的减法是模2减法,即没有借位的减法,也就是异或运算。当被除数逐位除完时,得到比除数少一位的余数。此余数即为冗余位,将其添加在信息位后便构成crc码字。例如,假设信息码字为11100011,生成多项式g(x)=x5+x4+x+1,计算crc码字。g(x) =x5+x4+x+1,也就是110011,因为最高次是5,所以,在信息码字后补5个0,变为1110001100000。用1110001100000除以110011,余数为11010,即为所求的冗余位。因此发送出去的crc码字为原始码字11100011末尾加上冗余位11010,即1110001111010。接收端收到码字后,采用同样的方法验证,即将收到的码字除以g(x),发现余数是0,则认为码字在传输过程中没有出错。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1