奇偶校验码 ,奇偶校验码检错原理,奇偶校验码的缺点。
Posted 士别三日wyx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了奇偶校验码 ,奇偶校验码检错原理,奇偶校验码的缺点。相关的知识,希望对你有一定的参考价值。
「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「专栏简介」:此文章已录入专栏《计算机网络零基础快速入门》
本章重点
- 什么是奇偶校验码?
- 奇偶校验码是怎么检错的?
- 奇偶校验码有什么缺点?
奇偶校验码
奇偶校验码是奇校验码和偶校验码的统称,是一种 「检错码」,用于检查二进制数据的 「位错」。
奇偶校验码分为奇校验码和偶校验码两种方法。
一、奇校验码
奇校验码在数据发送前,「检查」1的个数,「奇数」个1就在头部填充0,「偶数」个1就在头部填充1,使数据整体保持奇数个1;
接收数据时,重新检查1的个数:
- 「奇数」个则判定数据正常,去掉头部的填充符;
- 「偶数」个则判定数据出错,重新发送数据帧。
二、偶校验码
偶校验码在数据发送前,也会「检查」1的个数,「偶数」个1就在头部填充0,「奇数」个1就在头部填充1,使数据整体保持偶数个1;
接收数据时,重新检查1的个数:
- 「偶数」个1则判定数据正常,去掉头部的填充符;
- 「奇数」个1则判定数据异常,重新发送数据帧。
三、执行流程
以奇校验码为例
1)发送端发送一个数据帧( 0110 )
2)发送前检查1的个数:
- 如果是偶数个,就填充1(10110 ),发送数据
- 如果是奇数个,就填充0(00110 ),发送数据
3)发送端接收数据时,检查1的个数:
- 如果是奇数个1,则判定数据正常,去掉填充符(
00110 ) - 如果是偶数个1,则判定数据出错,需要将整个帧重发。
四、奇偶校验码的缺点
以奇校验码为例
发送前的数据是: 1110
只有1个位发生错误,比如第一位的1变成了0:0110 ,这时候1的个数是偶数,可以检查出错误。
但是,当两个位同时发生错误时,比如第一位、第二位的1都变成了0:0010 ,这时候1的个数仍然是奇数,奇校验码默认数据正常,从而导致检错失败。
这就意味着,当数据有奇数(1,3,5
)个位发生错误时,奇偶校验码可以正常检错;而偶数(2,4,6
)个位发生错误时,奇偶校验码不能正常检错。即检错率只有 50%
校验码
校验码在内存和通信的检错容错中应用广泛。
常用的校验码有奇偶校验码(Parity)、海明校验码和循环冗余校验码(CRC)
奇数偶数用异或操作即可计数实现。
奇偶校验码是对每个byte (8 bits) 加一位校验码,此时根据所采用的的是奇校验还是偶校验来确定校验码的值,使之这个序列中的1的个数为奇数/偶数。
优点:高效,快;
缺点:能反映错误但是无法定位错误,只能说错了就重传
海明码则是多重奇偶校验,它的做法是假设N位的数据,我们采用多位校验码,假设K位,加入了这K位校验码之后,我们能够用校验码的组合唯一地(一一对应地)反映N+K位的错误,所以 2^K-1>=N+K.
校验码的值采用分配的相关数据位之间异或加奇/偶校验获得。
而且得到的K位校验码的位置也是插入在2^K位,至此,获得海明码序列。
判断错误位置,则是采用分配的相关数据位和校验位之间异或加奇/偶校验获得,其bin2des的值就是发生错误的位数。
https://blog.csdn.net/u012532559/article/details/45307329
CRC
http://www.manongjc.com/article/947.html
https://blog.51cto.com/winda/1063951
以上是关于奇偶校验码 ,奇偶校验码检错原理,奇偶校验码的缺点。的主要内容,如果未能解决你的问题,请参考以下文章