概述
我们知道数据以二进制补码形式存储在计算机中,那么在传输数据的过程中计算机又如何知道它传输的数据是否正确呢?这时候就用到我们奇偶校验码了。
奇偶校验码?
用来检测数据传输过程是否发生错误的一种检错码
分类:奇校验、偶校验(在传输数据前使用哪个校验是规定好的,以确保发送端和接收端用同样的方式进行数据校验)原理是扩大码距由1变成2的方式,检错“1”的个数是奇数还是偶数来判断数据是否出错,如出错则要求重发,由于这种方法简单便捷因此也得到广泛应用。
这里就有人问了码距是什么?码距是指一个编码系统中任意两个合法编码之间至少有多少个二进制不同。比如:00 01 这里有一位不同,所以码距为1,00 11 两位不同这里码距为2,懂了吧!
不过它也有缺点
那就是只能检错不能纠错,而且只能检错1位或奇数个,不能检错偶数个,也不知道是哪一位出错。
奇校验有一个特征那就是产生不了全0的代码。
原理是什么?
奇校验:原始码流+校验位 总共有奇数个1。偶校验:原始码流+校验位 总共有偶数个1。
编码方式:信息码(一个字节)外加上一位奇偶校验位
证明
例如:奇校验
传输正常时
要传输数据"11001110",数据中含5个"1",(校验线路在收到数据后,通过发生器在校验位填上0或1,以保证和是奇数个1, 所以其校验位为"0")110011100;
同时把"110011100"传输给接收方,接收方收到数据后再一次计算奇偶性,"110011100"中仍然含有5个"1",所以接收方计算出的奇校验位还是"0",与发送方一致,表示在此次传输过程中未发生错误。
传输出错时
需要传输数据"11001110",数据中含5个"1",(为了确保1数个为奇数,所以其校验位为"0")110011100;
在传输的过程中如有出错,110011100>>>100011100(接收方再次计算奇偶性,1的个数是偶数,与发送方校验不一致,发生错误,要求重发)
为什么只能检错1位,不能检错多位?
证明:如数据1100 1110 0
传输数据1100 1110 0——1100 11100(无错)
1位出错——1000 11100(4个1,与发送端1的个数不一致,错误要求重发)
2位出错——1010 11100(5个1, 错一位变偶数(能检错出来),再错又变成奇数,所以检测不出来。
3位出错——1010 01100(4个1,与发送端1的个数不一致,错误要求重发)
知道为什么只能检错1位不能检错多位了吧!继续看下面的偶校验。
例如:偶校验
1的个数为偶数时,通过发生器在校验位填上0这个校验位为“0”(确保1的个数为偶数)否则校验位为“1” 接收方收到数据时,将按照偶校验的要求检测数据中“1”的个数,如果是偶数个“1”,表示传送正确,否则表示传送错误。
常用的奇偶校验码为垂直奇偶校验码、水平奇偶校验码、水平垂直奇偶校验码。
一大堆理论还不如一例子。
水平奇偶校验码?
水平奇偶校验码又被称为横向奇偶校验,对每一种数据的编码添加校验位,使信息位与校验位处于同一行。
例如:
它不但能检测出各段同一位上的奇数个错,而且还能检测出突发长度<=p的所有突发错误。其漏检率要比垂直奇偶校验方法低,但实现水平奇偶校验时,一定要使用数据缓冲器。
垂直奇偶校验码
垂直奇偶校验码又被称为纵向奇偶校验码,把数据分成若干组,一组数据排成一行,再加一行校验码.,针对每一行列采用奇校验 或 偶校验。
例如:
垂直奇偶校验码的缺点,只能检测出奇数个位出错的情况,并不能检测出偶数个位出错的情况。
水平垂直奇偶校验码
水平垂直奇偶校验码又称为纵横奇偶校验就是同时用水平校验和垂直校验,结合水平奇偶校验和垂直奇偶校验的基础上形成的一种校验方法,n个信息的一个分组排列成矩形式样,并以横向奇偶(HP)及纵向奇偶(VP)的形式编出奇偶校验位。
它能检测出传输过程中发生的所有3位或3位以下的错误、奇数个错误、大部分偶数个错误以及突发长度≤m+1的突发错误,可使误码率降至原误码率的百分之一到万分之一,有较强的检错能力,但是有部分偶数个错误不能检测出来。 水平垂直奇偶校验还可以自动纠正差错,使误码率降低2~4个数量级,适用于中、低速传输系统和反馈重传系统。
如果能确定是哪一位出错,并能将其修正,那就是使用海明码了。
好了,本期内容就此结束了,不懂的地方在评论区留言交流。
最后
以上就是爱撒娇橘子为你收集整理的tcp校验和计算校验和例子_计算机组成原理(误差检验码1———奇偶校验码)...奇偶校验码?原理是什么?水平奇偶校验码?垂直奇偶校验码水平垂直奇偶校验码的全部内容,希望文章能够帮你解决tcp校验和计算校验和例子_计算机组成原理(误差检验码1———奇偶校验码)...奇偶校验码?原理是什么?水平奇偶校验码?垂直奇偶校验码水平垂直奇偶校验码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复