软考 计算机系统(检验码)

154 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情

1. 奇偶检验码

奇偶检验码在编码中增加一位检验码,来使编码中1的个数为奇数(奇校验)或者为偶数(偶校验),使码距变为2。

奇偶检验码只能检查错误不能纠正错误,也就是它能够发现你错了但是不知道错在哪里,并且奇数校验只能检查出代码奇数个出错的编码不能检查出偶数个出错的编码。

例如:

1001用奇数检验码传的时候是11001,如果有1个编码(奇数个编码)出错了,假如变成了11000,那就可以检验出来这个编码出错了,如果是偶数个编码出错,例如变成了11010,这里两个编码出错了,但是检验不出来,因为1的个数还是奇数个。

2. 海明码

海明码是一种利用奇偶性来检错和纠错的校验方法。 海明码是通过在数据位的特定位置上插入k个校验码,通过扩大码距实现检错he纠错。

数据位是n位,校验位是k位,n k必须满足: image.png

码距=2可以检错,码距>=3才可能纠错

3. 循环冗余检验码(CRC)

循环冗余检验码(CRC)利用生成多项式为k个数据位产生r个校验码来进行编码,其编码长度为k+r。

CRC的代码格式为:

image.png

循环冗余检验码(CRC)由两部分组成,n为CRC字长,左边为信息码(数据)(k位),右边为校验码(n-k位)

校验码是由信息码产生的,校验码位数越多,校验能力越强。

在求CRC编码时,采用的是模2运算。模2加减运算的规则是按位运算,不发生借位和进位。

码距为2,可以检错不能纠错