检错与纠错码在计算机中经常被使用,在此对常用的三种检错纠错码做一个介绍,分别是奇偶校验码,CRC循环冗余校验码和海明码。
奇偶校验码
通常所说的奇偶校验码指的是一维奇偶校验码,它只能检错,不能纠错;只有二维奇偶校验码具备纠错能力。
校验方法:分为奇校验和偶校验,默认是校验所传输数据中’1’的个数是奇数还是偶数。
当约定为奇校验时,当所传输数据中’1’的个数为奇数,便在数据后面添加’0’;当所传输数据中’1’的个数为偶数,便在数据后面添加’1’,使1的个数满足奇数个。当约定为偶校验时,类似。后面的附加位选择是用来控制数据中’1’的个数,使其满足校验规则(奇数个或是偶数个)。
判断是否出错?当约定为奇校验时,如果接收方收到的数据中’1’的个数为奇数时,则认为未出错,否则发生错误。偶校验时类似。
例如:对待传输数据10110110约定采用奇校验时,发送方所需要发送的校验码为101101100,对于接收方来说,如果接收到的数据中’1’的个数不为奇数时,就会认为数据出错。
特点:接收方不会知道是数据的哪一处发生错误;只能检测奇数个位出现错误的情形,不能检验偶数个位发生错误;开销小,常用来校验1字节长的数据(只有1位出现错误的可能性大)。
CRC循环冗余校验码
循环冗余校验可以发现并纠正信息在传输过程中所出现的错误。
由于后面计算的需要,先引入模2运算的计算方法,它也可以看作为异或运算。
模2加法-按位加,不考虑进位:0+0=0;0+1=1;1+0=1;1+1=0。模2减法-按位减,不考虑借位:0-0=0;0-1=1;1-0=1;1-1=0。可以看出模2加法与减法的运算结果相同,故一律采用模2加法来运算。模2乘法-按照模2加法求部分积之和,不考虑进位。模2除法-按照模2减法求部分余数,不借位。余数的位数应该为除数的位数减一。
生成多项式:G(x)的选用需要满足合适的条件:1,任何一位发生错误,都应该使余数不为0;2,不同位发生错误应使余数不同;3,对余数继续做模2除

本文深入解析了三种常见的检错纠错码:奇偶校验码、CRC循环冗余校验码和海明码,详细介绍了它们的工作原理、校验方法及特点。
109

被折叠的 条评论
为什么被折叠?



