在计算机系统和数据通信系统中,数据在传输或存储过程中可能受到噪声、电磁干扰、硬件故障等因素影响,从而产生错误。因此,为了保证数据的可靠性,系统通常会在原始数据中加入冗余信息 用于检测错误,这种技术称为差错检测技术。
在软考高级系统架构设计师考试中,校验码是计算机系统基础和数据通信部分的重要知识点,常见考察内容包括:
-
奇偶校验码
-
循环冗余校验(CRC)
本文将系统讲解校验码的基本原理、奇偶校验方法、CRC校验原理以及典型计算题。
一、差错检测与校验码
差错检测的基本思想是:在原始数据的基础上增加一些冗余位,使接收方能够检测数据在传输过程中是否发生错误。
基本模型如下:
发送数据 = 原始数据 + 校验码
数据传输流程可以表示为:

接收方通过校验规则判断数据是否正确。如果校验不通过,则说明数据在传输过程中发生了错误。
需要注意的是:
大多数校验码只能检测错误 ,但不能自动纠正错误。
二、奇偶校验码
奇偶校验是最简单的一种差错检测方法。
基本思想是:
在数据后面增加 1 位校验位 ,使整个数据中 1 的个数满足某种规则。
奇偶校验分为两种:
-
奇校验
-
偶校验
三、偶校验
偶校验的规则是:
数据中1的总数必须为偶数。
如果原始数据中1的个数为偶数,则校验位为0;如果为奇数,则校验位为1。
示例:
原始数据:
1011001
统计1的个数:
4
4为偶数,因此校验位为:
0
最终发送数据:
10110010
四、奇校验
奇校验的规则是:
数据中1的总数必须为奇数。
如果原始数据中1的个数为奇数,则校验位为0;如果为偶数,则校验位为1。
示例:
原始数据:
1011001
1的个数为:
4
因为奇校验要求奇数,因此需要补1。
校验位:
1
最终发送数据:
10110011
五、奇偶校验的错误检测能力
奇偶校验虽然实现简单,但检测能力较弱。
奇偶校验只能检测:
奇数位错误
无法检测:
偶数位错误
例如:
原始数据:
10110010
如果两个比特同时发生错误:
10100010
此时数据中1的个数仍然为偶数,因此系统无法检测到错误。
因此奇偶校验的特点如下:
优点:
-
实现简单
-
硬件成本低
缺点:
-
检测能力有限
-
无法检测偶数位错误
六、二维奇偶校验(扩展)
为了提高奇偶校验的检测能力,可以采用二维奇偶校验。
基本思想是:
-
每一行进行奇偶校验
-
每一列进行奇偶校验
例如:
| 数据 | 校验位 |
|---|---|
| 1 0 1 1 | P |
| 0 1 0 1 | P |
| 1 0 1 0 | P |
| P P P P |
这种方法可以:
-
检测单比特错误
-
确定错误位置
但实现复杂度也会增加。
七、CRC循环冗余校验
CRC(Cyclic Redundancy Check)是一种功能更强大的差错检测方法。
CRC广泛应用于:
-
网络通信
-
磁盘存储
-
数据链路层协议
CRC的基本思想是:
将二进制数据看作一个多项式,然后使用生成多项式进行模2除法运算。
得到的余数就是CRC校验码。
八、CRC基本原理
CRC计算过程包括以下步骤:
-
选择生成多项式
-
在数据后补0
-
进行模2除法
-
得到余数作为CRC校验码
流程如下:

九、模2除法
CRC计算使用的是 模2运算,也就是二进制异或运算。
运算规则:
| 运算 | 结果 |
|---|---|
| 0 XOR 0 | 0 |
| 0 XOR 1 | 1 |
| 1 XOR 0 | 1 |
| 1 XOR 1 | 0 |
因此模2除法实际上就是不断进行异或运算。
十、CRC计算步骤示例
假设:
数据:
101100
生成多项式:
1101
步骤如下。
第一步:补零
生成多项式长度为:
4
需要补:
3个0
数据变为:
101100000
第二步:进行模2除法
通过异或运算计算余数。
最终余数:
100
第三步:生成发送数据
最终发送数据为:
101100100
其中:
100
就是CRC校验码。
十一、CRC校验过程
接收方收到数据后,需要进行CRC校验。
步骤:
-
使用相同的生成多项式
-
对接收数据进行模2除法
如果余数为:
000
说明数据正确。
如果余数不为0,则说明数据发生错误。
十二、典型例题
例题一(偶校验)
数据:
1101011
采用偶校验。
步骤:
统计1的个数:
5
5为奇数,因此校验位为:
1
最终数据:
11010111
例题二(奇校验)
数据:
1010110
统计1的个数:
4
奇校验要求奇数,因此校验位为:
1
发送数据:
10101101
例题三(CRC计算)
数据:
100100
生成多项式:
1101
补0:
100100000
进行模2除法。
余数:
011
最终发送数据:
100100011
十三、软考高频考点总结
在软考高级系统架构设计师考试中,校验码部分主要考察以下内容:
奇偶校验:
-
奇校验计算
-
偶校验计算
-
错误检测能力
CRC校验:
-
CRC计算步骤
-
模2除法运算
-
CRC余数计算
解题关键:
-
理解奇偶校验规则
-
掌握CRC补零与模2除法计算
十四、总结
校验码是保证数据可靠性的核心技术之一。
常见校验方法包括:
奇偶校验:
-
实现简单
-
检测能力较弱
CRC校验:
-
检测能力强
-
广泛应用于网络和存储系统