校验码(奇偶校验码,海明校验码,循环冗余校验码)

校验码:为避免接收的数据不是所传输的数据,在数据传输过程中,用于发现错误以及纠正错误的数据编码。

一种编码方案中,任意两个合法码字之间最少变化的二进制位数,称为码距。即接收的数据和传输的数据都是合法码字,两者之间有多少位不同,码距就是多少。一般,码距超过2(含2),有检错能力;码距超过3,有纠错能力。

校验码有奇偶校验码、海明校验码、循环冗余校验码(CRC码)等。

奇偶校验码

奇校验:一般在最左边添加一位校验位,保证整个数据(含校验位)中的1的个数是奇数。

偶校验:一般在最左边添加一位校验位,保证整个数据(含校验位)中的1的个数是偶数。

局限性:只能检测出奇数位的错误。而且不知道错在哪里(无纠错能力)。

若错误是偶数位,奇校验码中1的个数仍为奇数,偶校验码中1的个数仍为偶数,发现不了错误。

 【补充】异或:两者相同,结果为0;两者不同,结果为1。

海明校验码

通过多个校验位进行分组校验。

校验步骤:

第一步:计算需要多少校验位。(假设:信息位n位,校验位k位,2^{k}\geqn+k+1)

第二步:确定校验位和信息位的位置。(第i个校验位的位置为2^{i-1},信息位依次在剩余位置)

第三步:确定分组和校验位的值。( 位置号从1开始,每个信息位的位置号用二进制表示,所有信息位的每一个相同二进制位对应一个校验位,其中二进制位为1对应的信息位和对应校验位作为一组。而校验位的值为所在组的信息位内容的异或)

第四步:纠错。(接收到数据,将每组和对应校验位异或,结果不全为0则出错,结果全为0则未出错)

局限性:2位检错能力,1位纠错能力。(最多检测出2位错误。若检测出1位错误,可以知道错误在哪。若检测出2位错误,不知道具体错误在哪。)

实际应用中,会在海明码的基础上,再最前面加上全校验位对整体进行偶校验。

若海明码纠错结果都为0且偶校验为0,无错误。

若海明码纠错结果不全为0且偶校验也不为0,有1位错误,根据错误位置纠正即可。

若海明码纠错结果不全为0但偶校验为0,有2位错误,需重新传输。

 

循环冗余校验码(CRC码)

循环冗余校验码(CRC码,Cyclic Redundancy Check)

校验步骤:

第一步:确定需要多少校验位。(生成多项式的最高次幂是多少,校验位就是多少位)

第二步:确定除数。(生成多项式的幂由高到低对应的数位码)

第三步:校验位多少位,信息位就左移多少位,补0。然后除以(模2除)除数,余数为真正的校验位的值。

第四步:纠错。(接收的数据除以(模2除)除数,余数为0则未出错,否则出错)

假设,校验位3位,即余数3位,则有8种状态(2^{3}),其中余数000是未出错,其余余数为出错,超过8,出错的余数将循环相同(都在1-7之间)。

若含校验位在内的数据位数小于8,则可以检测出一位错误在哪。(即信息位n位,校验位k位,2^{k}\geqn+k+1)。

但,一般在网络通信中使用循环冗余校验码,通常检测出错误即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yannan20190313

感谢您的支持。祝好心情。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值