软考高级系统架构设计师备考(七):计算机系统基础—校验码

在计算机系统和数据通信系统中,数据在传输或存储过程中可能受到噪声、电磁干扰、硬件故障等因素影响,从而产生错误。因此,为了保证数据的可靠性,系统通常会在原始数据中加入冗余信息 用于检测错误,这种技术称为差错检测技术。

在软考高级系统架构设计师考试中,校验码是计算机系统基础和数据通信部分的重要知识点,常见考察内容包括:

  • 奇偶校验码

  • 循环冗余校验(CRC)

本文将系统讲解校验码的基本原理、奇偶校验方法、CRC校验原理以及典型计算题。


一、差错检测与校验码

差错检测的基本思想是:在原始数据的基础上增加一些冗余位,使接收方能够检测数据在传输过程中是否发生错误。

基本模型如下:

复制代码
发送数据 = 原始数据 + 校验码

数据传输流程可以表示为:

接收方通过校验规则判断数据是否正确。如果校验不通过,则说明数据在传输过程中发生了错误。

需要注意的是:

大多数校验码只能检测错误 ,但不能自动纠正错误。


二、奇偶校验码

奇偶校验是最简单的一种差错检测方法。

基本思想是:

在数据后面增加 1 位校验位 ,使整个数据中 1 的个数满足某种规则。

奇偶校验分为两种:

  1. 奇校验

  2. 偶校验


三、偶校验

偶校验的规则是:

数据中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计算过程包括以下步骤:

  1. 选择生成多项式

  2. 在数据后补0

  3. 进行模2除法

  4. 得到余数作为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校验。

步骤:

  1. 使用相同的生成多项式

  2. 对接收数据进行模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校验:

  • 检测能力强

  • 广泛应用于网络和存储系统

相关推荐
小马哥编程7 小时前
【软考架构】内聚与耦合
系统架构
burg_xun11 小时前
【生命科学 Agent】推理平台(二)
人工智能·程序人生·系统架构
gz927cool20 小时前
在 Harness 上搭建 Agent-Native 应用:可迁移经验
服务器·人工智能·ai·系统架构
桃花键神1 天前
GR00T N1 —— 双系统架构如何让一个模型驱动不同人形机器人
系统架构·机器人
我喜欢就喜欢2 天前
豆包赋能抖音生态:从内容创作到运营提效的全景应用
人工智能·系统架构
dishugj2 天前
https://blog.csdn.net/dishugj/article/details/162068579
数据库·系统架构
希赛网2 天前
2026下半年系统架构设计师考前20问
系统架构·软考高级·系统架构设计师·软考高级架构师·软考高级系统架构设计师
辛迪聊物业数字化2 天前
中小物业SaaS系统架构设计:从收费、巡检到IoT对接的落地实践
物联网·系统架构
各类产品分享2 天前
工厂 AR 巡检系统架构设计与落地难点解析
系统架构·ar·ar巡检