(计算机组成原理)第二章数据的表示和运算-第一节4:校验码

Posted 快乐江湖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(计算机组成原理)第二章数据的表示和运算-第一节4:校验码相关的知识,希望对你有一定的参考价值。

一:预备概念

(1)校验码的概念

校验码是指能够发现或自动纠正错误的数据编码,也称检错纠错编码
校验码原理为增加一些冗余码,来检验或纠错。

(2)码字和码距

网络传输内容实则是二进制序列,每种编码都对应特定的信息,如下
在这里插入图片描述

  • 码字:由若干位代码组成的一个字称为码字,比如上面的“00”,“01”
  • 码距:将两个码字逐位比较,具有不同的位的个数称为两个码字的距离,比如“00”和“10”距离就是1;一种编码方法可能有若干合法码字,各合法码字之间的最小距离称为“码距”,上面这种编码方案码距为1。

码距为1无检测能力;对于码距大于等于2的校验码,具有检错能力,且码距越大,检错、纠错能力就越强,而且检错能力总大于等于纠错能力

二:常见校验码

(1)奇偶校验码

在原编码的基础上增加一个校验码,它的码距为2,可以检测出一位错误(或奇数位错误),但不能确定出错位置,也不能检测出偶数位出错,增加的冗余位称为奇偶校验位

实现方法:由若干位有效信息(比如1B,0001 1011),再加上一个二进制位(检验位)组成校验码。如下图所示,校验位的取值为0或1,它的加入使整个校验码中“1”的个数要么是奇数要么是偶数,所欲就有两种可选的校验规律

在这里插入图片描述

  • 奇校验码:整个检验码中“1”的个数为奇数
  • 偶校验码:整个校验码中“1”的个数为偶数

举个例子,1001101的奇校验码和偶校验码设置如下

在这里插入图片描述
奇偶校验具有很大的局限性,只能发现数据代码中的奇数位出错的情况
在这里插入图片描述
校验原理:传输前,发送端和接收端会协议确定彼此之间采用奇校验还是偶校验。以偶校验为例,计算机首先会将二进制所有位进行异或运算,所得结果就是偶校验位,比如上面信息“1001101”,进行异或运算“1⊕0⊕0⊕1⊕1⊕0⊕1=0”,故偶校验位为0;接收端再接受信息后会进行异或运算,一旦结果出现1表明错误,比如上图中例子第一个出错“0⊕1⊕0⊕1⊕1⊕1⊕0⊕1=1”,所以结果错误(同时大家也可以发现如果再更改一位为1,那么最终结果仍然是,这就是奇偶校验的局限性)

(2)海明校验码

海明码是一种广泛采用的有效的校验码,本质是一种多重奇偶校验码。其实现原理是在有效信息位中加入几个校验位形成海明码,并把海明码的每个二进制位分配到奇偶校验组中。当某一位出现错误后,就会引起有关的几个校验位的值发生变化。它不但可以发现错误位置,还可以为自动纠错提供依据。

A:纠错理论

假设信息位为 n n n,校验位为 k k k,因此k个比特位一共可以映射 2 k 2^{k} 2k种状态;海明吗由信息位和校验位组成,因此共有 n + k n+k n+k位, n + k n+k n+k位每一个位置都有可能出现错误,因此这 2 k 2^{k} 2k种状态要把这 n + k n+k n+k种全部映射到,但是要注意其中还要包含一种全部正确的情况。

综上所述,得出下面的重要不等式

2 k ⩾ n + k + 1 2^{k}\\geqslant n+k+1 2kn+k+1

B:求解海明码

范例:求1010的海明码,具体流程如下
在这里插入图片描述

1:确定海明码位数

此二进制序列信息位 n = 4 n=4 n=4,根据前述不等式 : 2 k ⩾ n + k + 1 2^{k}\\geqslant n+k+1 2kn+k+1,可知 k k k为3时不等式方可成立。

  • 除了实际计算,也可以熟悉下面这张表,从而快速写出
    在这里插入图片描述

为了区分信息位和校验位,我们用 D 4 D 3 D 2 D 1 D_{4}D_{3}D_{2}D_{1} D4D3D2D1表示信息位(对应 1010 1010 1010);用 P 3 P 2 P 1 P_{3}P_{2}P_{1} P3P2P1表示校验位;整个海明码序列可以表示为 H 7 H 6 H 5 H 4 H 3 H 2 H 1 H_{7}H_{6}H_{5}H_{4}H_{3}H_{2}H_{1} H7H6H5H4H3H2H1

2:确定校验位分布

海明码中校验位不能直接放在信息位的头部和尾部
规定:校验位 p i p_{i} pi应该放在海明码 H 2 i − 1 H_{2^{i-1}} H2i1的位置,因此 P 1 P 2 P 3 P_{1}P_{2}P_{3} P1P2P3分别对应 H 1 H 2 H 4 H_{1}H_{2}H_{4} H1H2H4,其实也就是2进制的权值

校验位分布如下,首先放入校验位,信息位从低到高依次补全空位

海明码位置 H 7 H_{7} H7 H 6 H_{6} H6 H 5 H_{5} H5 H 4 H_{4} H4 H 3 H_{3} H3 H 2 H_{2} H2 H 1 H_{1} H1
分布情况 D 4 D_{4} D4 D 3 D_{3} D3 D 2 D_{2} D2 P 3 P_{3} P3 D 1 D_{1} D1 P 2 P_{2} P2 P 1 P_{1} P1
海明码1010

接下来,由于校验位为3位,因此信息位需要根据校验位分为3组,每个分组分别进行偶校验

3:求校验位的值

首先,我们需要海明码中对应位置为信息位的下标(也就是所处位置)转为二进制序列,比如上面表格中, H 7 H_{7} H7对饮位置为信息,其下标为 7 7 7,对应二进制序列为111

海明码位置 H 7 H_{7} H7 H 6 H_{6} H6 H 5 H_{5} H5 H 4 H_{4} H4 H 3 H_{3} H3 H 2 H_{2} H2 H 1 H_{1} H1
二进制111110101011
分布情况 D 4 D_{4} D4 D 3 D_{3} D3 D 2 D_{2} D2 P 3 P_{3} P3以上是关于(计算机组成原理)第二章数据的表示和运算-第一节4:校验码的主要内容,如果未能解决你的问题,请参考以下文章

(计算机组成原理)第二章数据的表示和运算-第一节5:本章习题

(计算机组成原理)第二章数据的表示和运算-第一节:字符与字符串在计算机中的表示详解

(计算机组成原理)第二章数据的表示和运算-第一节:一文总结进制转换,妈妈再也不用担心我不会进制转换了

(计算机组成原理)第二章数据的表示和运算-第二节4:定点数的加减运算和溢出判断

计算机组成原理 王道考研2021 第二章:数据的表示和运算 -- BCD码字符与字符串(ASCII大端模式 / 小端模式)

(计算机组成原理)第二章数据的表示和运算-第三节1:浮点数的表示

(c)2006-2024 SYSTEM All Rights Reserved IT常识