软考历程(2)——海明码校验

来源:互联网 发布:北京宏观经济数据库 编辑:程序博客网 时间:2024/05/21 09:41

这两天学了校验码,在计算机系统基础知识这块,校验还是挺重要的。这里涉及到的校验码有三种:

奇偶校验码(Parity Code

海明码(Hamming Code)

循环冗余检验码(CyclicRedundancy CheckCRC

1.奇偶校验码

这是一种最简单最有效的校验方法,通过在编码中增加一位校验位,使1的个数为偶数(偶校验)或奇数(奇校验),从而使码距变为2。奇校验可以检测代码中奇数位出错的编码,不可以发现偶数位出错的情况。

2.海明码

这是利用奇偶性来检错和纠错的校验方法。其构成方法为:在数据位之间插入k个校验位,求海明码的过程可以分为以下几个步骤:

1)根据数据位n,确定校验位k, nk满足关系:2k-1n+k

2)设海明码为H1H2H3,……Hn+k,将校验位依次放在20,21,222i-1……的位置上;

3)将数据位由低位到高位依次放在海明码剩余的位置上;

4)找出每个校验位所校验的数据位,方法为:第一个校验位隔一位校验一位,第二个校验位隔两位校验两位,第三个校验位隔三位校验三位……每个校验位都校验它自身;

5)分别对每个校验位所校验的数据位做抑或运算,结果为校验位的值;

6)将所得校验位的值填入其中,即得海明码。

3.循环冗余校验码

它由两部分组成,左边为信息码,右边为校验码,校验码是由信息码产生的,求CRC编码时,采用模2运算。多用于数据通信领域和磁介质存储领域,在参加的上个中谷项目中就用到了CRC校验,那会儿对于这个东东还觉得蛮深奥的呢!

1 0