存储器校验

  • 1.对存储器校验的原因:

以内存为例,内存是电子设备,信息保存在电容当中,若采用静态RAM,则是保存在四管的触发器当中,若内存所处的电磁环境比较复杂,或在空间环境下受到带电粒子的打击,可能造成电容的充放电或触发器的翻转,存在在存储器的信息可能会出错

  • 2.编码的检测能力和纠错能力与任意两组合法代码之间二进制的最少差异数有关

差异的位数越多,检错能力和纠错能力就越强
若只差一位,既不能检错,也不能纠错
若相差两位,可以检1位错,纠0位错
若相差三位,可以检1位错,纠1位错

  • 3.编码的最小距离

任意两组合法代码之间二进制的最少差异数

编码的检测能力和纠错能力与编码的最小距离关系
L-1=D+C(D>=C)
L:编码最小距离
D: 检错位数
C: 纠错位数

假设L=3,要使编码具有一位纠错能力,至少有一位检错能力

  • 4.汉明码

(1)定义:指具有一位纠错能力的编码

(2)采用奇偶校验
          采用分组校验

(3)奇校验:加上一个校验位,加上原来的数据位,两者和在一起,代码当中1的个数是奇数个。
偶校验:加上一个校验位,加上原来的数据位,两者和在一起,代码当中1的个数是偶数个。

假设要传输的信息是一个8位的信息,假设其为偶校验,加上一位校验位使其1的个数变为偶数个

得到一个偶校验的编码,若读出的信息中1的个数是偶数个,则可以知道9位代码中有1位代码发生翻转,1的个数由奇数个变为偶数个,得知9位代码中有一个错。(不知道哪个出错)

(4)可以通过分组划分:

采用2位奇偶校验位,划分为2组:前4位为1组,后4位为1组
每一组都用1个校验位,得到新的校验位,如上图所示,接受到的信息进行校验,若是前面的5位1的个数变为奇数个,说明这5位中有1位是错误的;若是后面的5位1的个数变为奇数个,说明这后5位中有1位是错误的。

(5)汉明码的分组是一种非划分方式

假设现在有7位数据
分成3组,每组有1位检验位,共包括4位数据位。

每个圆圈表示1组
1,2,4分别被分到3组当中,每组独有一位,每组都采用偶校验的方式。3组中每组包含4位数据,4位数据中有1位校验位。

3组生成3个校验结果

偶校验采用异或门实现,1的个数是偶数个,所以校验的结果应该是3个0,无差错

P1对应第一组校验结果,P2对应第二组校验结果,P3对应第三组校验结果

P3P2P1
0    0   0     若无差错,三组校验结果都为0

0    0   1     第一组出错(第一组独有的位置,恰好就是1

1    0   1     第一组和第三组都出错,代码只错误1位,所以是两组的公共部分5
1    0   1     第二组和第三组都出错,1位错,二三组公共位置6
1    1   1     第一组和第二组和第三组都出错,1位错,一二三组公共位置7

综上:对每组分别校验,校验得出的结果排在一起,得出的数用二进制的方式来表示,这个二进制数转换为十进制就给出了出错的位置,全0没有出错,001就是1错了,011是3错了,110就是6错了,111是7错了

(6)用这种方式编码校验位放在哪里呢?

例如:第一组1,3,7哪个是校验位?
校验位只对一组数据进行校验,所以和其他组不会有公共部分,所以校验位度放在2的n次方,1,2,4都为校验位

汉明码如何进行编码呢?

二进制表示:
第一组 XXXX1 最右侧的1位为1
第二组 XXX1X 倒数第二位是1
第三组 XX1XX
第四组 X1XXX
第五组 1XXXX

若代码最后1位和倒数第2位 均为1,所以是第一组和第二组公共部分出错,其他组以此类推

校验过程:
如果对每一组代码进行检测
假如第一组代码出错,检验出结果一定是最右侧的一位为1,其他位置为0,
假如第一组和第三组代码出错,检验出结果一定是最右侧的一位为1和最右侧开始数第三位为1,其他位置为0,得到101,(也就是5,一三组共有的位置)

校验的结果指出某一位出错,或者整个代码在传输过程中没有发生错误,1,2,4,8是每一组独有的位置,这样的位置就是汉明编码中校验位所在的位置

结论:
对每组分别校验,校验得出的结果排在一起,得出的数用二进制的方式来表示,这个二进制数转换为十进制就给出了出错的位置,

汉明码

  • 组成汉明码的三要素

(1)汉明码的组成需添加多少位检测位?
2^k>=n+k+1
n:信息位
k:校验位(k组)
汉明码添加多少位检测位,就是分成多少组,对每一组进行检测,会得到不同的检测位,组成二进制编码
这些编码要指出某一位的错或者是没有错

接收方要指出n+k位中哪一位出错了,或者是没有错
最后要指出状态数n+k+1(这些状态是用k位的二进制数进行编码的)=》2^k>=n+k+1

(2)检测位的位置?

2^i (i=0,1,2,3,…)

(3)检测位取值?

检测位的取值与该位所在的检测“小组承担的奇偶校验任务有关”
一般采用偶校验(1的个数均为偶数个,在不特殊说明的情况下)

(4)根据汉明编码的规则,把所有代码分成k组,每一组都有1位,对这组当中的数据进行校验,各个校验位Ci
各检测位Ci所承担的检测小组为

C1检测的g1小组包含第1,3,5,7,9,11,…位置的二进制编码为X…XXX1
C2检测的g2小组包含第2,3,6,7,10,11,…位置的二进制编码为X…XX1X
C4检测的g3小组包含第4,5,6,7,12,13,…位置的二进制编码为X…X1XX
C8检测的g4小组包含第8,9,10,11,12,13,…位置的二进制编码为X…1XXX
.
.
.
每组中都有一个位置是独占的,则独占的这个位置就是检测位所在的位置
gi小组独占第2^i-1位 位置的二进制编码为0…10…0
gi和gj小组共占第2^(i-1)+2 ^(j-1)位 对应的位置的二进制编码为0…010…0
gi、gj和gj小组共占第2^(i-1)+2 ^(j-1)+2 ^(l-1)位

例题:
求0101按“偶校验”配置的汉明码
解:因为n=4
由2^k>=n+k+1得k=3
汉明码排序如下:

解析:对照上面的表c1对应1,3,5,7…这几个位,发现5位和7位都为1,1的个数是偶数个,所以C1处添0
对照上面的表c2对应2,3,6,7…这几个位,发现第7位都为1,1的个数是奇数个,所以C2处添1
对照上面的表c2对应4,5,6,7…这几个位,发现第5位和7位都为1,1的个数是偶数个,所以C2处添0

检验位只在1,2,4,8,,这几个位进行校验
所以0101的汉明码为0100101

汉明码---存储器校验(简单易懂详解)相关推荐

  1. SAP-MM发票校验容差详解

    MIRO发票校验容差详解 MIRO发票校验容差是指收货业务与发票校验业务之间的差异,这种差异可 能是物料价格差异.收货数量差异.收货金额差异等等,总之,发票校验的容差 内容最为丰富,容差类型有很多种, ...

  2. IEEE浮点数 换算方法【超易懂详解】

    IEEE浮点数 换算方法[超易懂详解] 格式概览 转换方法 0. 例子说明 1. 小学乘除:十进制 转 二进制 2. 小学数学:科学计数法 3. 儿童观察力:提取三个元素 4. 幼儿手工:收尾拼接 附 ...

  3. mysql单表查询实例_MySQL简单查询详解-单表查询

    MySQL简单查询详解-单表查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询的执行路径 一条SQL查询语句的执行过程大致如下图所示: 1>.客户端和服务端通过my ...

  4. python中paste函数的作用_PIL图像处理模块paste方法简单使用详解

    python2中提供了PIL基础的图像数据出来模块,在python3中更名为了pillow模块,名字虽然发生了改变,但是提供的方法和功能都是一样的,对于日常基础的图像数据处理分析来说是足够用了的,现在 ...

  5. u盘制作大师 linux系统教程,制作用U盘启动的Linux系统的简单步骤详解

    制作用U盘启动的Linux系统的简单步骤详解 最近听朋友说误删除了Linux系统里的文件,于是系统进不了,里面保存着很多重要的数据,这该怎么办?虽然可以把硬盘取出挂载其他Linux系统运行,也可跳过控 ...

  6. scrapy-splash java,scrapy-splash简单使用详解

    1.scrapy_splash是scrapy的一个组件 scrapy_splash加载js数据基于Splash来实现的 Splash是一个Javascrapy渲染服务,它是一个实现HTTP API的轻 ...

  7. java 天气爬虫_java网页爬虫简单实例详解——获取天气预报。

    [本文介绍] 爬取别人网页上的内容,听上似乎很有趣的样子,只要几步,就可以获取到力所不能及的东西,例如呢?例如天气预报,总不能自己拿着仪器去测吧!当然,要获取天气预报还是用webService好.这里 ...

  8. c语言substr函数的优点,C/C++中substr函数的应用(简单讲解)详解

    substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串 subst ...

  9. Android简单计时器详解(Timer)

    Android计时器详解(Timer) 在开发中我们有时会有这样的需求,即在固定的每隔一段时间执行某一个任务.比如UI上的控件需要随着时间改变,我们可以使用Java为我们提供的计时器的工具类,即Tim ...

最新文章

  1. BaseExecutor.query()-清空本地缓存
  2. [BZOJ2458][BeiJing2011]最小三角形
  3. 2017-2018-1 20155229 《信息安全系统设计基础》第十四周学习总结
  4. 免费数据集获取加速器|Graviti Open Datasets
  5. java中 下列不合法的语句_在Java中,下列( )是不合法的赋值语句。_学小易找答案...
  6. 华为首款可折叠屏5G手机今日开售;GitHub将开源代码保存在北极;Win10禁用WEP加密|极客头条...
  7. 基于人脸识别的商业大数据2
  8. 【前端】ACE Editor(代码编辑器) 简易使用示例
  9. WeX5 - AJAX跨域调用相关知识-CORS和JSONP
  10. 我的前半生之十一,创业维艰,人生百态
  11. idea创建web项目的时候报错:Error reading file E:/workspaces/**/pom.xml
  12. 2011年中国大陆十佳IC设计公司
  13. 第四方支付崛起,聚合支付为什么这么火?
  14. 整合SpringBoot + MybatisPlus 搭建JAVA多模块项目基本骨架
  15. javafx:AnchorPane设置子容器和父容器同等大小
  16. 报错:Invalid character found in method name. HTTP method names must be tokens
  17. poj 2451 Uyuw's Concert (半平面交)
  18. 怎么关DELL笔记本触摸板
  19. 网络安全(三 漏洞的抓取与挖掘)
  20. L2-018 多项式A除以B (25 分)

热门文章

  1. 0基础学python要多久-零基础零经验自学Python,到精通Python要多久啊?
  2. 一张图学会python应用到excel-Python应用之------Excel操作
  3. 笔记本电脑下载python视频-学Python买什么笔记本电脑?
  4. python安装-Python uWSGI 安装配置
  5. python函数定义及调用-Python函数(函数定义、函数调用)用法详解
  6. 语音识别技术准确率早已超过人类平均水平
  7. 科学网—语音识别技术发展史
  8. 利用MATLAB平台实现字的语音识别功能
  9. Redis--缓存设计与性能优化
  10. Vue3学习之第三节:setup()中使用计算属性