关注wx“印象编程”,排版更清楚~
校验方法
校验方式的核心作用是检测 / 纠正数据传输、存储或处理中的错误,保障信息准确性。408课程中主要是计算机组成原理和计算机网络中会详细学习和使用。
主要作用:
1.计算机组成原理中的作用
- 针对内存、CPU 缓存、磁盘等存储 / 处理场景,解决硬件噪声、电磁干扰导致的比特翻转问题。
- 保障指令执行、数据读写的准确性,避免计算结果错误或系统崩溃。
2.计算机网络中的作用
- 主要用于实现差错控制,比如
OSI模型的数据链路层、网络层和传输层都有差错控制的功能。
校验码是通过某种校验方式生成的具有发现错误或纠正错误的数据编码。原理是被校验数据(原始数据)中引入部分冗余信息(校验数据),得到最终的校验码(原始数据+校验数据)符合某种编码规则。

数据校验的流程:发送方对原始数据按照预定的编码规则进行编码,生产包含冗余信息的校验码,校验码传输给接收方,接收方利用预定的解码规则进行解析,并判断校验码是否符合编码规则,若不符合编码则说明出错了。
码距:码距是指编码中不同的两个二进制位之间的距离,又称为海明距离。且规定一个有效编码集中,任意两个码字的最小码距是该编码集的码距。校验码的目的就是扩大码距,码距越大,抗干扰能力、纠错能力越强;但数据冗余越大,编码效率却越低。
码距与纠错、纠错能力如下表:
| 码距 | 检错、纠错能力 | |
|---|---|---|
1 | d ≥ e+1 | 可检测e个错误 |
2 | d ≥ 2t+1 | 可纠正t个错误 |
3 | d ≥ e+t+1 && e ≥ t | 可检测e个错误并纠错t个错误 |
奇偶校验
奇偶校验是常见的简单校验码,通过检测二进制代码中1的个数的奇偶性进行数据校验;个数为奇数对应奇校验,个数为偶数对应偶校验。
简单奇偶校验
简单奇偶校验只有一个校验组、一个校验位,所以只能提供一位检错信息进行错误检查,无法纠错。
编码规则:增加一个校验位P,使得最终的校验码中数学1的个数为奇数或偶数,最小码距是2。
奇校验:整个校验码(有效信息位+校验位)中1的个数为奇数;
偶校验:整个校验码(有效信息位+校验位)中1的个数为偶数。
地址结构:




交叉奇偶校验
多重奇偶校验是把原始数据信息按某种规律分成若干校验组,每个数据位至少两个以上的校验组,当校验码中的某一个位发生错误时,能在多个检错位中被指出,使得偶数位错误也可以被检查出,还可以指出最大可能是哪位出错,从而将其纠错。
交叉奇偶校验是最典型的例子。原理是将原始数据按矩阵形式排列(行 + 列划分),对每行、每列分别进行奇偶校验并添加对应校验位,形成 “行校验位 + 列校验位” 的双重校验组。
- 每个数据位同时属于 “所在行” 和 “所在列” 两个校验组,满足 “一个数据位归属多个校验组” 的多重校验核心要求。
- 接收端通过核对行、列校验结果:若某行和某列校验均失败,可定位到交叉点的数据位是错误位;
- 既能检测出偶数个比特错误(突破简单奇偶校验的局限),还能定位并纠正单个比特错误,也可检测部分多比特错误。


循环冗余校验


地址结构:

循环冗余校验码的思想:
数据发送时,发生放和接收方双方约定一个“除数”,K个信息位+R个校验位作为”被除数“,添加校验位后需保证除法的余数为0。收到数据后,进行除法检查最终余数是否为0。若余数非0说明出错,则进行重传或纠错。
例题:
求有效信息110的CRC码,生成多项式。
有效信息是110则,即信息位为3位;
多项式是,而校验位为R位,R位为生产多项式最高次幂,即R=4。所以校验码位数为N=K+R=7。所以在信息位110后填充0000冗余为存放校验码。
接着,按模2除法:

求得商,余数,最后得到的CRC码为1101001。(把最终余数1001替代进原来的0000冗余位)。
检错和纠错:发送方发生CRC码1101001,接受方接收后用11101进行模2除。若余数为000代表没有出错。
注意:K个信息位,R个校验位,若生成多项式选择得当,且,则CRC码可纠正1位错误,但实际应用中一般只用来“检错”。
总结
循环冗余校验码构造
CRC码构造流程 |
|---|
①由生成多项式确定“除数”。若生产多项式中x的最高次幂为R,则“除数”有R+1 |
②K个信息位+R个0冗余位 |
③被除数、除数进行模2除,得到R位余数 |
④K个信息位+R个余数=CRC码 |
校验
CRC码校验逻辑 |
|---|
收到K+R位数据,与生成多项式模2除,计算R位余数 |
余数为0,说明无错误 |
余数非0,说明出错 |
检错、纠错能力
| 检错和纠错能力 |
|---|
| 可检测出所有奇数个错误 |
| 可检测出所有双比特错误 |
| 可检测出所有小于等于校验位长度的连续错误 |
| 若选择合适的生成多项式,且则可纠正单比特错 |
海明校验
海明码的设计思路是将信息位分组进行偶校验→多个校验位→多个校验位标注出错位置。

实现逻辑:





1526

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



