码迷,mamicode.com
首页 > 其他好文 > 详细

校验之:海明码校验、奇偶校验

时间:2016-07-13 19:14:13      阅读:449      评论:0      收藏:0      [点我收藏+]

标签:

1、奇偶校验码

奇偶校验通过在编码中增加一个校验位来使编码中的1的个数为奇数(奇校验)或者偶数(偶校验),从而使码距变为2.对于奇校验,它可以检测代码中奇数位出错的编码,但不能发现偶数位出错的情况。既当合法编码中奇数位出现错误。也就是1变成0或者0变成1,其编码的奇偶性就发生了变化,从而发现错误。但是这种校验只能发现出现了错误但是不知道具体是哪一位发生了错误。

8421码的奇偶校验码

   十进制数       8421 BCD码         带奇校验位的8421码        带偶校验位的8421码    
0 0000 0000  1 0000  0
1 0001 0001  0 0001  1
2 0010 0010  0 0010  1
3 0011 0011  0 0011  0
4 0100 0100  1 0100  1
5 0101 0101  0 0101  0
6 0110 0110  1 0110  0
7 0111 0111  0 0111 1
8 1000 1000  0 1000  1
9 1001 1001  1 1001  0

常用的奇偶校验有三种:水平奇偶校验,垂直奇偶校验校验和水平垂直奇偶校验。

水平奇偶校验:对每一种数据的编码添加校验位,使信息位与校验位处于同一行

垂直奇偶校验:这种校验将数据分为若干组,一组一行,整齐排列,再加上一行校验位,针对每一列采样奇校验或偶校验。

对32位数据:10100101  00110110  11001100 10101011 进行校验:

        编码分类                垂直奇校验                垂直偶校验        
数据

10100101

00110110

11001100

10101011

10100101

00110110

11001100

10101011

校验位 00001011 11110100

就是这个意思:--------------------------------------------------------------------------------------------------------------

技术分享

 

水平校验与垂直水平校验都类似。

2.海明码

海明码也是利用奇偶校验和纠错校验的方法,海明码的构成是:在数据位之间插入k个校验位,通过扩大码距来时间检查和纠错。例如:对于8位的数据,需要4个校验位来进行校验。如,令数据位:D7、D6、D5、D4、D3、D2、D1、D0和校验位位:P4、P3、P2、P1。则编码位置:

H12     H11    H10    H9    H8    H7    H6    H5    H4    H3    H2    H1   

D7     D6     D5     D4      P4      D3     D2     D1    P3     D0     P2    P1

校验码的设置位置在2^i的位置上。每个校验位只校验数据中位置号的二进制编码和自身位置号的二进制编码相匹配的数据:

即如下图所示:

 技术分享

因此校验关关系为:

P1偶校验:P1、D0、D1、D3、D4、D6

即:P1=D0⊕D1⊕D3⊕D4⊕D6

P2偶校验:P2、D0、D2、D3、D5、D6

即:P2=D0⊕D2⊕D3⊕D5⊕D6

P3偶校验:P3、D1、D2、D3、D7

即:P3=D1⊕D2⊕D3⊕D7

P4偶校验:P4、D4、D5、D6、D7

即:P4=D4⊕D5⊕D6⊕D7

海明码的错误检测也非常简单,对使用海明码的数据进行如下计算即可: 

G1=P1⊕D0⊕D1⊕D3⊕D4⊕D6

G2=P2⊕D0⊕D2⊕D3⊕D5⊕D6

G3=P3⊕D1⊕D2⊕D3⊕D7

G4=P4⊕D4⊕D5⊕D6⊕D7

对于所得的值,若采用偶校验,则全为0表示接受的数据无误(奇校验则全为1)当G4G3G2G1不全为0,说明发生了错误,而且是G4G3G2G1的十进制值指出了错误的位置:如:G4G3G2G1=1010,则说明H10(D5)出了问题,将其取反便可纠正。

 

 

设数据01101001,采用四个校验位求其偶校验的海明码:

0    1    1    0    1    0    0    1

D7 D6 D5  D4  D3  D2  D1  D1

P1=D0⊕D1⊕D3⊕D4⊕D6=1⊕0⊕1⊕0⊕1=1

P2=D0⊕D2⊕D3⊕D5⊕D6=1⊕0⊕1⊕1⊕1=0

P3=D1⊕D2⊕D3⊕D7=0⊕0⊕1⊕0=1

P4=D4⊕D5⊕D6⊕D7=0⊕1⊕1⊕0=0

所以校验的海明码为:

 技术分享

 

 

校验之:海明码校验、奇偶校验

标签:

原文地址:http://www.cnblogs.com/-ZZM/p/5666909.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!