搜索
热搜: 活动 交友 discuz
Hi~登录注册

什么是奇偶校验

[复制链接]
vang 发表于 2015-2-27 21:01 | 显示全部楼层 |阅读模式



      奇偶校验(Parity Check)是一种校验数据代码传输正确性的方法,理解奇偶校验先从数据位说起:
      在二进制的世界里,数据最基本的单位是比特(bit),也就是常说的“位”,它只有两个值,“0”或“1”,在ASC II 编码中,8个这样的位组成一个字节(byte),其中7bit为信息位,1bit作为校验位。假如某一字符的编码为:01010010,则0101001是它的信息位,最后的“0”是它的校验位。


1

1


2

2




      因为“位”的值可以是“0”也可以是“1”,所以校验位实际上也有两种状态:“0”或“1”。那什么时候用“0”,什么时候用“1”呢?这个就要看看校验进行的原理了:

      一个字符从一处传送到另一处,为了确保传送的准确无误,需要对字符前后进行对比校验。还是以01010010为例,有一种校验的方法是通过计算这个字符中“1”的个数是奇数个还是偶数个来进行的,而校验位是填“0”还是填“1”就取决于是要确保这个字符中“1”的个数是奇数还是偶数了,如果要确保整个被传输的字符中的“1”的个数为奇数个,则这里的校验位就得填“0”,即01010010;若要确保整个被传输的字符中的“1”的个数为偶数个,则这里的校验位就得填“1”,成为01010011。



      采用奇数个的校验方式称为奇校验(Odd Parity),采用偶数个的校验方式称为偶校验(Even Parity),奇校验和偶校验称为单向奇偶校验(Row Parity),单向奇偶校验一次只采用单个校验位,发送器在数据祯每个字符的信号位后添加一个奇偶校验位,接收器会对该奇偶校验为位进行检查。




      +++扩展:
      奇偶校验还可以分为三类不同的校验方式:垂直奇偶校验、水平奇偶校验、水平垂直冗余校验(方阵校验)。
      垂直奇偶校验是以一个字符为单位做校验,上面的01010010即为垂直奇校验,01010011即为垂直偶校验。垂直校验处理的过程比较简单,所以不能检测出所有可能出现的误码,比如同时出现两位或其他偶数位误码就无法识别,因为字符中的“1”奇偶性没变;此外也无法检测出误码在哪一位。

3

3


      水平奇偶校验是以字符组作为校验单位的,数据的传输还是以字符为单位,最后对同一字符组的相同位进行校验。

4

4


      水平垂直冗余校验(方阵校验)是前两者的结合,对多个字符单独做垂直校验,每个字符都生成一个垂直奇偶校验码,然后给每个字符的相同位及其垂直奇偶校验码生成水平奇偶校验码,最后将这些校验码作为一个校验字符附于被校验字符组后一并传输。



5

5




      三种方式中方阵校验的效率最高,可检测出更多的误码,但是仍然不能检测所有可能出现的错误。奇偶校验可以校验数据传输中的错误,但是不能在校验出错误后自动纠错,不过,因其校验的机制简单,更容易在系统中实现,所以有着广泛的运用。




回复

使用道具 举报

崔巍 发表于 2015-2-28 01:12 | 显示全部楼层
好贴好贴,赞之!
回复 支持 反对

使用道具 举报

 楼主| vang 发表于 2015-2-28 12:26 | 显示全部楼层
崔巍 发表于 2015-2-28 01:12
好贴好贴,赞之!

谢谢老师的鼓舞
回复 支持 反对

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表