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

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

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

  • 奇偶校验码

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

  • 检测能力强

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

相关推荐
Xxtaoaooo5 小时前
DolphinDB 物联网数据平台全景:一份从架构到落地的实践地图
物联网·系统架构·时序数据库·数据库架构·dolphindb
谙弆悕博士10 小时前
系统集成项目管理工程师教程(第3版)笔记——第4章:信息系统架构
笔记·系统架构·项目管理·创业创新·学习方法·业界资讯·物理
某林21215 小时前
ROS2 + WebRTC + MQTT 异构系统架构
架构·系统架构·机器人·硬件架构·webrtc·ros2
小马哥编程17 小时前
【软考架构】候选键求解与主属性 / 非主属性判定
系统架构
雨神聊编2 天前
设备指纹之建立设备库
系统架构
晏宁科技YaningAI2 天前
VoIP系统的工程实现模型:从信令控制到媒体传输的完整架构解析
网络·人工智能·架构·系统架构·信息与通信
尽兴-2 天前
企业业务系统架构选型与渐进式演进
运维·系统架构·devops
微三云 - 廖会灵 (私域系统开发)3 天前
电商秒杀系统架构设计:高并发场景下的流量削峰与防超卖实践
系统架构
Macbethad3 天前
基于WPF与.NET的洁净厂房数据孪生平台技术方案:架构、实现与SEMI标准实践
数据库·系统架构
(~ ̄▽ ̄)~凤凰涅槃3 天前
007_建立你的架构师知识地图
系统架构