
计算机组成与体系结构——校验码——2020.11.22
发布日期:2021-05-07 07:08:44
浏览次数:24
分类:技术文章
本文共 1230 字,大约阅读时间需要 4 分钟。
(一)校验码——校验码基础知识
- 码距:任何一种编码都由需要码字构成,任意两个码字之间最少变化的二进制位数就称为数据校验码的码距
- 码字:定义有效的算编码的形式
- 例如:用4位二进制表示16中状态,则有4个不同的码字,此时码距为1(0000->0001)
(二)校验码——奇偶校验
-
奇偶校验码的编码方法是:由若干位有效信息(如一个字节),再加上一个二进制位(校验位)组成校验码
-
奇校验:整个校验码(有效信息位和校验位)中“1”的个数为奇数
-
偶校验:整个校验码(有效信息位和校验位)中“1”的个数为偶数
例如:3位二进制,可表示8种不同的码字,(000,001,010,011,100,101,110,111),码距为1 如果我们此时用奇校验来传递数据:加上校验位之后,信息正确后的数据(0001,0010,0100,011,1000,1011,1101,1110) -
对于校验,很多时候,都是通过增大码距,来传递信息的
例如:对于,我们想传递110 ,奇校验之后1101 ,传递正确 如果,我们在传递过程中,数据发生了改变100,奇校验之后1001,传递错误,“1”为偶数 如果,我们在传递过程中,数据发生了改变101,奇校验之后1011,校验正确,传递错误 因此:奇偶校验,只可检查1位(奇位都可以)的错误,不可纠错
(三)校验码——循环校验码CRC
CRC校验,可检错,不可纠错-
CRC的编码方式是:在k位信息码之后拼接r位校验码
-
应用CRC码的关键是如何从k位信息位简便地得到r位校验码(编码),以及如何从k+r位信息码判断是否出错
-
循环冗余校验码编码规律如下:
- 把待编码的N位有效信息表示为多项式M(X)
- 把M(X)左移K位,得到M(X)×XK,这样空出了K位,以便拼接K位余数(即校验码)
- 选取一个K+1位的产生多项式G(X),对M(X)×XK做模2除
- 把左移K位以后的有效信息与余数R(X)做模2加减,拼接为CRC码,此时的CRC码共有N+K位
-
把接收到的CRC码用约定的生成多项式G(X)去除,如果正确,则余数为0;如果某一位出错,则余数不为0
-
不同的位数出错其余数不同,余数和出错位序号之间有唯一的对应关系
-
模2除法:
模2除法是指在做除法运算的过程中不计算进位的除法 -
(四)校验码——海明校验码
海明校验,可检错,也可纠错- 原理:在有效信息位中加入几个校验位形成海明码,使码距比较均匀拉大,并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不但可以发现错误,还能指出错误的位置,为自动纠错提供依据
- 2r >= m+r+1
- m 有效信息位位数(一般会直接给出)
- r (求取) 编码位数 一般求至少需要多少位数
- 海明校验:主要是对于不同的分组当中,都会涉及到相同的校验位置(交叉),由于一个位置出错,会引起其他校验位置发生改变,根据交叉,锁定出错位置,从而纠错
——时人不识凌云木,直待凌云始道高——
发表评论
最新留言
很好
[***.229.124.182]2025年04月14日 06时51分46秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JDK 内置的多线程协作工具类的使用场景
2019-03-05
redis 单线程为什么快
2019-03-05
redis 过期数据删除策略
2019-03-05
Java 源代码到运行的过程
2019-03-05
Java 中哪些对象可以获取类对象
2019-03-05
linux 的 cp 命令如何复制不提示覆盖
2019-03-05
缓存穿透 / 缓存击穿 / 缓存雪崩 / 缓存一致性
2019-03-05
linux 的 pwd 命令
2019-03-05
linux 的 sleep 命令
2019-03-05
js 的 let var const 区别
2019-03-05
无线掌上B超USONIX-R6线阵B模图像初步
2019-03-05
无线掌上B超USONIX-R6凸阵B模图像初步
2019-03-05
react路由使用以及封装
2019-03-05