垂直奇偶校验码

首先说一下,校验码是计算机网络在数据链路层干的一个事。它可以校验出传输过程中是否出现了错误。当然我们现在一般都是TCP/IP协议,这是高层协议,它已经有校验方法不需这一层的校验。而且TCP/IP协议里并没有数据链路层。所以本校验方法适用的是并有走网线的,串口协议。比如用arduino,从串口发送了一个字符串,那么这个可以用这里的方法。

回到正题,奇偶校验码的定义是:一种通过增加冗余位使得码字中(对于垂直奇偶校验码来说,码字就是本列,包含加的校验码)"1"的个数恒为奇数或偶数的编码方法,是一种检错码。
然后再说一下增加的那位校验码的编码规则:
偶校验:Ri=从上到下两两异或
奇校验:Ri=从上到下两两异或,再异或1

从数学上来理解一下,为什么这么做。首先要知道,异或满足加法交换率,就是无论一串二进制怎么交换位置,他们的和都是一个固定的数。也就是说,传输的数据每列的异或和,要么等于0,要么等于1.另外上面的数只有两种情况,有奇数个数或有偶数个数,这两种情况都可得出一个结论。如果有奇数个1那么模2加为1,偶数个1模2加为0.下图标出了推导进程。



先看偶校验,如果上面和为1(奇数个1),那么偶校验位为1,总的1的个数为偶数.如果上面和为0(偶数个1),那么偶校验位也为0,总的1的个数也为偶数。
再看奇校验,如果上面的和为1(奇数个1),那么奇校验位为0(+1),总的1的个数为奇数。如果上面的和为0(偶数个1),那么奇校验位为1(+1),总的1的个数还是为奇数。

垂直奇偶校验码的缺点,只能检测出奇数个位出错的情况,并不能检测出偶数个位出错的情况。

最后发一下教材的内容,主要看一下那个图,更主观。总得来讲真是经典,简约,但不易理解。



文/中中 浏览次数:0次   2020-03-23 22:21:34

相关阅读


评论: