首页 > 编程知识 正文

计算机网络课程ppt课件,校验码怎么计算

时间:2023-05-06 02:49:25 阅读:138669 作者:4613

目录

校验码

校验数字原理

奇偶校验码

哼唱检查码

循环冗馀校验码

校验码

计算机系统在运行中需要进行信息的交换。 为了确保信息在传输中没有错误,通常使用有效校验码对接收的数据进行有效校验。 常见的有效检查代码有三个。 是奇偶校验、汉明、循环冗馀的有效校验码。

校验码的原理是针对以下代码表:

信息ABCD代码00011011A电脑要将' c'(10 )传送到B电脑。 传输中发生事故,传输信息发生错误,10变为11时,B电脑会取得11的代码。 11是合法的代码,所以解码后接收信息d。

但是,对于以下代码表:

信息A B

光盘代码100001010111A电脑要将' c'(010 )传送到B电脑。 传输中发生事故,传输信息发生错误,010变为011时,B计算机会取得011的代码。 由于011不是合法代码,B电脑判断出信息发生了错误,让A电脑重新发送。 010为111 )时,111(d ) )为合法代码,B电脑接收该错误的信息。

引入以下概念。

码字:由多个代码组成的单词,如代码1中的11、10和代码2中的101。

33558www.Sina.com/:2:将两个码字逐一比较,将不同的位数称为两个码字之间的距离。

两个码字之间的距离各合法码字之间的最小距离。 (代码1的导线间距离为1,代码2的导线间距离为2 )

代码2的代码间隔为2,因此必须至少更改2位才能成为另一个合法的代码。 这意味着,如果发生1位错误,它一定是非法代码。

在代码间隔为k的编码表中,如果错误位数大于或等于k,则编码可能是另一种合法编码,接收方将接收到错误消息。 如果错误位数小于k,则为非法代码,接收方判定为错误代码。

校验码码距:所有校验码(有效信息位和奇偶校验位)的“1”的个数为奇数

奇校验码:所有校验码(有效信息位和奇偶校验位)中的“1”的个数为偶数

对于最高有效比特为http://www.Sina.com/1101010的7个有效信息比特的编码,其奇偶校验为11101010(5 (五个之一); 校验码为01101010(4个1 )

假设使用了偶检的符号。 符号为11001010,发生错误时为1100101 偶校验码:。 该符号有奇数个“‘1'(5个),不满足偶检,因此确认该符号发生了错误,并请求重发。 发生错误11http://www.Sina.com/0http://www.Sina.com/010 (变了2位)时,有偶数个“1”,属于偶数检查,被认定为有效代码。

奇偶校验位,

对奇偶校验的计算机实现(以奇偶校验为例,对各位进行异或运算,如果得到的结果为0,则符合奇偶校验规则,如果为1,则不符合。

对于10001码,他的偶校验码就是偶校验码010001;

针对11001码,他的偶校验码就是偶校验码111001。

所以可以通过异或运算的以上性质来实现。

汉明码汉明码最多只能检测出2位错误。 纠正1位错误的汉明码默认进行偶检(除非另有说明使用奇检)。 海明代码是由0和1组成的一系列序列

检查只能发现1位的错误,但无法确定是哪个位引起了错误。 另一方面,高明校验码可以确定是哪个位引起了错误。

1将信息位分组进行偶校验-具有多个奇偶校验位-能量

标注出错位置

如何确定有多少个校验位呢?假设我们现在有n位的信息位和k位的校验位,那么k个校验位总共可以表示种状态。由于一个位置出错(纠正1位错)都需要有一种状态来表示,就要求(+1的1表示正确的状态)

对于信息位1010

确定海明码的位数:设信息位(1010),共4位,检验位,共3位,对应的海明码为 确定校验位的分布
校验位放在海明位号为的位置上,信息位按顺序放到其余位置上 1010

分组
我们需要确定是负责校验哪些位置的,我们将1,2,4的二进制码写出来,保持位数相同
1:001     2:010   4:100 ,若将0写成'*'表示通配符,如下表: 001010100**1*1*1** 将1-7根据统配规则填入表中 124**1*1*1**001(1)010(2)100(4)011(3)011(3)101(5)101(5)110(6)110(6)111(7)111(7)111(7)

可以看出
**1可以管理1,3,5,7
*1*可以管理2,3,6,7
1**可以管理4,5,6,7

求校验位
则可以让负责的校验,负责的校验,负责的校验。
,,
由此则.....
由此得出海明码:

101001

0

查错
或者或者中的一组不满足偶校验,则出错

纠错
首先理解一下为什么海明码能纠错

若蓝色区域偶校验错误,则(1,3,5,7位中有一个发生了错误)
1.黄色和红色区域的偶校验均正确,则说明(2,3,6,7)和(4,5,6,7)均正确,则1位置发生错误
2.黄色区域正确,红色区域错误,则说明(2,3,6,7)正确,(4,5,6,7)中有一个错误,则5位置发生错误
3.红色区域正确,黄色区域错误,则说明(2,3,6,7)中有一个错误,(4,5,6,7)正确,则3位置发生错误
4.黄色和红色区域都错误,则说明(2,3,6,7)中一个错误,(4,5,6,7)中一个错误,则7位置发生错误
同理可得其他各种情况。
由于(1,3,5,7)是由**1负责的,所以若(1,3,5,7)发生错误,则错误位置的二进制的第3位置必然为1,若(2,3,6,7)发生错误,则错误位置的二进制的第2位置必然为1,若(4,5,6,7)发生错误,则错误位置的二进制的第1位置必然为1。
若发生错误,设错误位置对应的二进制为
则(若偶检验成功则为0,失败则为1),同理可得,最终就能确定发生错误的位置

循环冗余校验码

奇偶校验会在每一个字符信息的首部或尾部添加一个奇偶校验码,对于大量传输的数据进行校验时,会增加大量的额外开销,尤其在网络通信中,传输的数据信息都是二进制比特流,因而没有必要将数据再分解成一个个字符,这样也就无法采用奇偶校验码,因此,通常采用CRC码进行校验。

CRC校验的基本原理

设生成多项式,信息码为101001

增加冗余码 (校验码)
生成多项式G(x)
双方约定的一个(r+1)位二进制数,发送方利用G(x)对信息多项式做模2除运算,生成校验码。接收方利用G(x)对收到的编码多项式做模2除运算检测差错及错误定位。

G(x)应满足的条件
1.最高位和最低位必须为1
2.当被传送信息(CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0
3.不同位发生错误时,模2除运算后余数不同
4.对不为0余数继续进行模2除运算应使余数循环

除2模运算

除2模运算对于每一位,若不够则不用借位,即0-1=1,0-0=0,1-1=0,1-0=1,即异或运算操作。

1.部分余数首位为1时,商为1,减除数
2.部分余数首位为0时,商为0,减0
3.当部分余数的位数小于除数的位数时,该余数即为最后余数

移位相除确定CRC码
将信息码左移r位,低位补0,对移位后的信息码,用生成多项式进行模2除运算,产生除数,CRC码为信息码+余数
假设信息码为101001,生成多项式为1101,则余数为001,最终确定CRC码为101001 001检验与纠错
接收方用接收到的信息与约定好的生成多项式进行模2除运算,若余数为0,则正确,不为0则发生错误。
若接收方收到的信息为:101001 001与生成多项式(1101)进行运算得到的余数为0,则正确
若接收方收到的信息为:101001 011与生成多项式(1101)进行运算得到的余数为010,则发生错误,错误位置为2,恰好为010的十进制数。但在这里并不能说所得余数就代表出错位置,如下表 接受余数出错位101001000001110100101101021010011010113101000001100410101100110151011010011106100001001111711100100100180010010010109

由上表可以看出出错位并不等于余数,但是有一定的联系。余数在001-111中循环出现,因为冗余码只有3位,只能表示8种情况,但是CRC码共有3+6=9位,无法表示完全。由于有r位校验位,即余数有r位,因此余数能表示种状态,为纠错范围能覆盖所有CRC码,则要求(1为正确的情况)。

因此当时,CRC码可以纠错一位,但是由于CRC码通常用于计算机网络,都是几千bit+几个校验位,因此主要为了检错,而非纠错。

黄大牙牙yyds

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。