相关文章:

校验码——码距   https://blog.csdn.net/weixin_44330072/article/details/106860286

校验码——海明码及码距   https://blog.csdn.net/weixin_44330072/article/details/106695425

校验码——CRC循环冗余校验码   https://blog.csdn.net/weixin_44330072/article/details/106859961

其实校验码就是在码距的原理上产生的,码距越大校验能力,纠错能力越强,所以奇偶校验码、海明码、CRC码究其原理都是利用一系列规则提升一段码字的码距而已。

一、奇偶校验码

奇偶校验码是一种增加二进制传输系统最小距离的简单和广泛采用的方法。例如,单个的奇偶校验将使码的最小距离由一增加到二。
       一个二进制码字,如果它的码元有奇数个1,就称为具有奇性。例如,码字“10110101”有五个1,因此,这个码字具有奇性。同样,偶性码字具有偶数个1。注意奇性检测等效于所有码元的模二加,并能够由所有码元的异或运算来确定。对于一个n位字,奇性由下式给出:

奇性 =  ⊕  ⊕  ⊕ … ⊕ 

奇偶校验可描述为:给每一个码字加一个校验位,用它来构成奇性或偶性校验。例如,在图2 中,就是这样做的。可以看出,附加码元d2,是简单地用来使每个字成为偶性的。因此,若有一个码元是错的,就可以分辨得出,因为奇偶校验将成为奇性。奇偶校验编码通过增加一位校验位来使编码中1个个数为奇数(奇校验)或者为偶数(偶校验),从而使码距变为2。因为其利用的是编码中1的个数的奇偶性作为依据,所以不能发现偶数位错误。

再以数字0的七位ASCII码(0110000)为例,如果传送后右边第一位出错,0变成 1。接收端还认为是一个合法的代码0110001(数字1的ASCII码)。若在最左边加一位奇校验位,编码变为10110000,如果传送后右边第一位出错,则变成10110001,1的个数变成偶数,就不是合法的奇校验码了。但若有两位(假设是第1、2位)出错就变成10110011,1的个数为5,还是奇数。接收端还认为是一个合法的代码(数字3的ASCII码)。所以奇偶校验不能发现。

奇偶校验位可由硬件电路(异或门)或软件产生:
              偶校验位  ⊕  ⊕  ⊕ … ⊕ , 奇校验位 =NOT(  ⊕  ⊕  ⊕ … ⊕  )。

在一个典型系统里,在传输以前,由奇偶发生器把奇偶校验位加到每个字中。原有信息中的数字在接收机中被检测, 如果没有出现正确的奇、偶性,这个信息标定为错误的,这个系统将把错误的字抛掉或者请求重发。

在实际工作中还经常采用纵横都加校验奇偶校验位的编码系统--分组奇偶校验码。

现在考虑一个系统, 它传输若干个长度为m位的信息。如果把这些信息都编成每组n个信息的分组,则在这些不同的信息间,也如对单个信息一样,能够作奇偶校验。图4中n个信息的一个分组排列成矩形式样,并以横向奇偶(HP)及纵向奇偶(VP)的形式编出奇偶校验位。
       m位数字、横向奇偶位、n个码字

...
...
...
... ... ... ... ... ...
...
...

   纵向奇偶位
                                                                        图 4 用综横奇偶校验的分组奇偶校验码

研究图4可知:分组奇偶校验码不仅能检测许多形式的错误。并且在给定的行或列中产生孤立的错误时,还可对该错误进行纠正。
       在初级程序员试题中(早期也出现在程序员试题中),经常有综横奇偶校验的题目。一般解法应该是这样:先找一行或一列已知数据完整的,确定出该行(或列)是奇校验还是偶校验。并假设行与列都采用同一种校验(这个假设是否正确,在全部做完后可以得到验证)。然后找只有一个未知数的行或列,根据校验性质确定该未知数,这样不断做下去,就能求出所有未知数。

【例】2001年初级程序员试题
       由 6 个字符的 7 位 ASCII 编码排列,再加上水平垂直奇偶校验位构成下列矩阵(最后一列为水平奇偶校验位,最后一行为垂直奇偶校验位):

字符 7位ASCII码 HP
3 0 0 0 1 1 0
1 0 0 1 0 0 1
+ 1 0 1 0 1 1 0
0 1 1 1 1 1
D 1 0 0 1 0 0
= 0 1 1 1 1 1
VP 0 0 1 1 1 1

则  处的比特分别为 __(36)__ ;
        处的比特分别为 __(37)__ ;
        处的比特分别为 __(38)__ ; 和  处的字符分别为 __(39)__ 和 __(40)__ 。

[解]

从ASCII码左起第5列可知垂直为偶校验。则:
       从第1列可知 =0;从第3行可知水平也是偶校验。
       从第2行可知 =1;从第7列可知 =0;从第8列可知 =1;
       从第7行可知 =1;从第6列可知 =0;从第6行可知 =1;从第2列可知 =1;
       从第1行可知 =1;从第3列可知 =1;从第4行可知 =0;
       从第4列(或第5行)可知 =0;整理一下:
       (36) = 1110
       (37)  = 1000
       (38) = 1011
       (39) 由字符  的ASCII码1001001=49H知道, 即是“I”(由“D”的ASCII码是1000100=44H推得)
       (40) 由字符  的ASCII码0110111=37H知道, 即是“7”(由“3”的ASCII码是0110011=33H推得)
       假如你能记住“0”的ASCII码是0110000=30H;“A”的ASCII码是1000001=41H,则解起来就更方便了。

校验码——奇偶校验码详解,码距,例题相关推荐

  1. 使用Gin框架集成JWT,源码、详解、面试问题

    使用Gin框架集成JWT,源码.详解.面试问题 一.什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519). ...

  2. 工业机器人码垛教学实施_工业机器人应用案例码垛详解

    工业机器人应用案例码垛详解 随着科技的进步以及现代化进程的加快,人们对搬运速度的要求越来越 高,传统的人工码垛只能应用在物料轻便.尺寸和形状变化大.吞吐量小的场 合,这已经远远不能满足工业的需求,机器 ...

  3. jsp漂亮的登录界面源码_【案例+源码】详解MVC框架模式及其应用

    案例+源码]详解MVC框架模式及其应用 写在开头: 首先我们需要知道,框架模式.模式.开发模式是三种不同的概念,但他们的目的都一样:解耦! 1.关于MVC框架模型 MVC是三个单词的缩写: M,Mod ...

  4. 计算机乘法原理 移位,原码乘法,原码乘法原理详解

    原码乘法,原码乘法原理详解 1.人工算法与机器算法的同异性 在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积. 设n位被 ...

  5. 如何获取QQ邮箱授权码——步骤详解

    获取QQ邮箱授权码步骤详解 1.打开QQ邮箱,进入邮箱账户设置界面 下滑当前界面,显示到邮箱服务区域,选择自己需要开启的协议服务 或点击下方提示中的生成授权码 点击开启,显示验证密保弹窗,根据提示进行 ...

  6. Babel转码器详解

    Babel转码器详解 Babel是一个广为使用的ES6转码器,可以将ES6代码转为ES5代码,从而在浏览器或其他环境运行.这意味着可以用ES6的方式编写程序而不用担心环境是否支持 Babel的配置文件 ...

  7. Android 源码编译详解【合集篇】

    Android 源码编译详解[一]:服务器硬件配置及机型推荐 做 Android系统开发多年,开发环境都是入职就搭建好了,入职时拿个账号密码就直接开始搞开发了,年初换了新公司,所有的项目都是刚起步,一 ...

  8. Android四大组件之bindService源码实现详解

        Android四大组件之bindService源码实现详解 Android四大组件源码实现详解系列博客目录: Android应用进程创建流程大揭秘 Android四大组件之bindServic ...

  9. HTTP状态码100-500+详解

    HTTP状态码100-500+详解 1xx响应信息提示   这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个1xx  • 100 - Continue 初始的请求已经接受,客 ...

最新文章

  1. unordered_map的使用特性
  2. CSDN的Markdown编辑器常用语句
  3. 基于开源jabber(XMPP)架设内部即时通讯服务的解决方案
  4. 图解TC++3.0开发教程
  5. linux下源码安装vim,ubuntu 源码编译安装最新的vim 8.0
  6. IntelliJ IDEA 15发布
  7. “局部图像特征描述概述”--樊彬老师
  8. Linux服务跟随启动,Linux—添加开机启动(服务/脚本)
  9. Eclipse中打包maven项目-war包方式
  10. STM32 HAL库学习系列第3篇 常使用的几种延时方式
  11. 数据库文件导入SQL数据库
  12. 数字信号处理实验一 系统响应及系统稳定性
  13. 游戏中的数学:向量数学(vector math)
  14. Premiere Pro CS6自学所需的视频编辑基础(二)
  15. B2C大点名:国内B2C网站收集
  16. 笔记本电脑桌面上计算机打不开怎么办,笔记本电脑开了机一直进不去桌面怎么办...
  17. 设计模式学习系列6 原型模式(prototype)
  18. 自主存取控制方法中-----------用户权限的“授权”与“收回”
  19. CNN--ResNeXt--Aggregated Residual Transformations for Deep Neural Networks
  20. 抓取整个网页的图像捕捉工具:Web2Pic Pro

热门文章

  1. 仁爱英语听力测试软件,仁爱英语八年级下册英语期末练习测试(含听力录音)...
  2. calabash-android环境搭建,calabash-android(Debugging TestServer.apk)
  3. 电脑如何录屏?3个方法教您win10电脑怎么录屏!
  4. Android 引用系统图标
  5. 中国沙发行业前景调研及投资建议分析报告2022年版
  6. 在控制台 在网页 输出特殊符号 Unicod编码
  7. android jmdns,Android异常:’java.lang.NoClassDefFoundError:javax.jmdns.JmDNS’
  8. 仅为笔记本1/4大小的低能耗超便携设备即将发布
  9. Flash9.ocx彻底删除的最佳方法
  10. 刚刚整理的截获SQL错误代码弹出提示信息类.