软件设计师学习笔记2-校验码

发布于:2023-08-27 ⋅ 阅读:(55) ⋅ 点赞:(0)

目录

1.校验码的基础知识

2.奇偶校验码

3. CRC循环冗余检验码

4.CRC编码的具体求法及检错(中级不要求掌握)

4.1 CRC检验码的具体求法

4.2 差错检验

5.海明码

5.1 海明码的原理

5.2 海明码校验位位数的求取

6.对本节内容的总结


1.校验码的基础知识

码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制位数就称为数据校验码的码距。举几个例子:

2.奇偶校验码

奇偶校验码的编码方法是:由若干位有效信息(如一个字节),再加上一个二进制位(校验位)组成校验码。

奇校验:整个校验码(有效信息位和校验位)中“1”的个数为奇数

偶校验:整个校验码(有效信息位和校验位)中“1”的个数为偶数

举个例子,如下:

3. CRC循环冗余检验码

CRC编码方法是:在k位信息码之后拼接r位校验码(即信息位+检验位)。应用CRC码的关键是如何从k位信息位简便地得到r位校验位(编码),以及如何从k+r位信息码判断是否出错。

把接收到的CRC码用约定的生成多项式G(x)去除(模二除法),如果正确,则余数为0;如果某一位出错,则余数不为0。不同的位数出错其余数不同,余数和出错位序号之间有惟一的对应关系。

注意:CRC检验,可检错,不可纠错

4.CRC编码的具体求法及检错(中级不要求掌握)

4.1 CRC检验码的具体求法

101101对应的多项式为x^5 + x^3 + x^2 + 1(即x^0),反过来也可以由多项式推对应代码。

我们就假设发送的数据为101110,采用的CRC生成多项式是P(x) = x^3 + 1(即1001),我们现在来求数据对多项式的余数(模二除法),过程如下:

注:(1)模二除法就是逐位进行异或运算 (2)在被除数(即数据)后面要先加上(多项式位数-1)个0再进行计算 (3)余数的位数一定等于(多项式位数-1)

求出余数之后便可获得校验码(即信息位+检验位(所得余数))为101110011

4.2 差错检验

我们依旧以上述例子来讲解,如果我们将所得校验码再去除以多项式,我们就会发现余数为0。我们现任意假设一位或多位数据发生改变,看看余数会如何变化,我们就假设101110变成了111110,末尾加上余数,计算过程如下:

5.海明码

5.1 海明码的原理

海明校验码的原理是:在有效信息位中加入几个校验位形成海明码,使码距比较均匀地拉大,并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不但可以发现错误,还能指出错误的位置,为自动纠错提供了依据。

注:海明码既可检错,也可纠错。

5.2 海明码校验位位数的求取

公式:2 ^ r >= m + r + 1

注:其中r表示校验位的位数,m表示信息位的位数

6.对本节内容的总结

该图片来自希赛软考:

声明:本文参考自希赛软考

上一篇:软件设计师学习笔记1-数据的表示

下一篇:软件设计师学习笔记3-CPU组成

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到