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

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

奇偶校验码(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校验,那会儿对于这个东东还认为蛮深奥的呢!

原文地址:https://www.cnblogs.com/bhlsheji/p/5081640.html