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

接收方通过校验规则判断数据是否正确。如果校验不通过,则说明数据在传输过程中发生了错误。
大多数校验码只能 检测错误 ,但不能 自动纠正错误 。
奇偶校验是最简单的一种差错检测方法。
在数据后面增加 1 位校验位 ,使整个数据中 1 的个数满足某种规则 。
如果原始数据中1的个数为偶数,则校验位为0;如果为奇数,则校验位为1。
1011001
4
0
10110010
如果原始数据中1的个数为奇数,则校验位为0;如果为偶数,则校验位为1。
因为奇校验要求奇数,因此需要补1。
1
10110011
奇偶校验虽然实现简单,但检测能力较弱。
奇数位错误
偶数位错误
10100010
此时数据中1的个数仍然为偶数,因此系统无法检测到错误。
为了提高奇偶校验的检测能力,可以采用 二维奇偶校验 。
CRC(Cyclic Redundancy Check)是一种功能更强大的差错检测方法。
将二进制数据看作一个多项式,然后使用生成多项式进行模2除法运算。

CRC计算使用的是 模2运算 ,也就是二进制异或运算。
因此模2除法实际上就是不断进行 异或运算 。
101100
1101
3个0
101100000
100
101100100
接收方收到数据后,需要进行CRC校验。
000
如果余数不为0,则说明数据发生错误。
1101011
5
11010111
1010110
10101101
100100
100100000
011
100100011
在软考高级系统架构设计师考试中,校验码部分主要考察以下内容
校验码是保证数据可靠性的核心技术之一。

上一篇:软考系统架构设计师如何备考?
下一篇:系统架构师案例分析经验
软考梦工厂
扫码关注我们