(计算机组成原理)第二章数据的表示和运算-第一节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 2k⩾n+k+1
B:求解海明码
范例:求1010的海明码,具体流程如下
1:确定海明码位数
此二进制序列信息位 n = 4 n=4 n=4,根据前述不等式 : 2 k ⩾ n + k + 1 2^{k}\\geqslant n+k+1 2k⩾n+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}}
H2i−1的位置,因此
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 |
海明码 | 1 | 0 | 1 | 0 |
接下来,由于校验位为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 |
---|---|---|---|---|---|---|---|
二进制 | 111 | 110 | 101 | 011 | |||
分布情况 | 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大端模式 / 小端模式) |