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

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

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

  • 奇偶校验码

  • 循环冗余校验(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校验:

  • 检测能力强

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

相关推荐
池佳齐6 小时前
软考高级系统架构设计师备考(十):操作系统—文件管理
系统架构
你这个想法好6 小时前
Media Service 从系统架构到应用场景的深度解析
车载系统·系统架构
池佳齐6 小时前
软考高级系统架构设计师备考(二):计算机系统基础—计算机体系结构详解
系统架构
weixin_408099677 小时前
【系统架构级】电商自动化系统搭建:OCR + 自动上架完整解决方案(从0到1落地)
系统架构·自动化·文字识别·api接口·跨境电商·ocr识别·电商自动化
文言一心1 天前
海量警情知识库系统架构设计:基于LightRAG的混合检索方案
系统架构
qq_396227951 天前
系统架构篇
系统架构
张子都2 天前
【新版系统架构设计师】备考
职场和发展·系统架构·软件工程
空中海2 天前
第一章:Android 系统架构与核心原理
android·系统架构
FrontAI2 天前
Next.js从入门到实战保姆级教程:实战项目(上)——全栈博客系统架构与核心功能
开发语言·前端·javascript·react.js·系统架构