这两天学了校验码,在计算机系统基础知识这块,校验还是挺重要的。这里涉及到的校验码有三种:
奇偶校验码(Parity Code)
海明码(Hamming Code)
循环冗余检验码(CyclicRedundancy Check,CRC)
1.奇偶校验码
这是一种最简单最有效的校验方法,通过在编码中添加一位校验位。使1的个数为偶数(偶校验)或奇数(奇校验)。从而使码距变为2。
奇校验能够检測代码中奇数位出错的编码,不能够发现偶数位出错的情况。
2.海明码
这是利用奇偶性来检错和纠错的校验方法。其构成方法为:在数据位之间插入k个校验位。求海明码的过程能够分为下面几个步骤:
(1)依据数据位n,确定校验位k, n和k满足关系:2k-1≥n+k;
(2)设海明码为H1。H2。H3。……Hn+k,将校验位依次放在20,21,22,2i-1……的位置上。
(3)将数据位由低位到高位依次放在海明码剩余的位置上。
(4)找出每一个校验位所校验的数据位,方法为:第一个校验位隔一位校验一位。第二个校验位隔两位校验两位,第三个校验位隔三位校验三位……每一个校验位都校验它自身;
(5)分别对每一个校验位所校验的数据位做抑或运算,结果为校验位的值。
(6)将所得校验位的值填入当中,即得海明码。
3.循环冗余校验码
它由两部分组成。左边为信息码。右边为校验码。校验码是由信息码产生的,求CRC编码时,採用模2运算。多用于数据通信领域和磁介质存储领域,在參加的上个中谷项目中就用到了CRC校验,那会儿对于这个东东还认为蛮深奥的呢!