效验码

校验码:指能够发现或能够自动纠正错误的数据编码,也称检错纠错编码。

实现原理:通过加一冗余码,来检验或纠错编码

码字 : 由若干位代码组成的一个字

码距:将两个码字逐位进行对比,具有不同的位的个数称为两个码字间的距离,一种编码方案可能有若干个合法码字,各合法码字间的最小距离称为“码距。也称海明距离。

计算码距方法

计算0100和1111

直接观察法:可以看出,有3个数位值不同,所以码距为3.

异或计算法:0100⊕1111=1011 ,结果为1011,里面有几个1就代表有多少个数位值不同,即码距是多少,这里码距是3。

若码距=2,有检错能力;若码距≥3,可能还会纠错能力

奇偶校验码

校验原理

在原编码中加一个校验位,则原编码就变成了校验码,它的码距为2,可以检查出奇数位错误,但不能检查出偶数位错误,增加的冗余位为奇偶校验位,一般校验位设置在原编码的最左边或最右边。

奇校验码:整个校验码(信息位+校验位)中1的个数位奇数

偶校验码:整个校验码(信息位+校验位)中1的个数位偶数

奇偶校验

偶校验的硬件实现:各信息进行异或(模2加)运算,得到的结果即为偶校验位

奇偶校验码的码距d=2,仅能检测岀奇数位错误,无纠错能力

异或法制

奇数个一相异或 为 1

偶数个零相同或 为 1

总结

上述奇偶校验码不能发现偶数位错误,能发现奇数位错误,但是不能定位。

海明校验码

一种多重奇偶校验码。

实现原理:在有效信息位中加入几个校验位形成海明码,并把海明码的每一个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化。

特点:可以发现错误,定位错误位置,自动纠正错误。 可以检测双比特错误,但只能纠正单比特错误。

海明校验码的分布规律

校验位P放在海明位号为 2 ^(i-1) 的位置上

海明码纠错以及定位

实现原理

每个校验组分别利用校验位和参与形成该校验位的信息位进行奇偶校验检查,即异或运算⨁,构成k个校验方程。

S1=P1⨁D1⨁D2⨁D4

S2=P2⨁D1⨁D3⨁D4

S3=P3⨁D2⨁D3⨁D4

若S1S2S3=000,则说明无错,否则说明出错。这个数的值就是出错的位置,如S1S2S3=001,表示第1位出错,即H1出错,直接将该位取反就可以达到纠错的目的。

海明码完善

总结

循环冗余校验码(CRC)

首先,发送端和接受端会有一个生成多项式G(x)约定,生成多项式G(x)的最高次幂为R。任意一个二进制数码都可用一个系数为0或1的多项式与之对应。比如:二进制数码 1101 对应的G(x)=1*X3+1*X2+0*X1+1*X0= X3+X2+1

确定生成多项式即为除数

在发送端,将要传送的K位二进制信息码左移R位,将它与生成多项式G(x)所对应的的二进制数码进行模2除法,产生余数,生成一个R位检验码,并附在信息码后,构成一个新的二进制码(CRC)码,共K+R位。

模2除算法

用于求 CRC 码

1、被除数最高位 为 1,上 1 否则 上 0

2、两者进行异或运算,一直得到校验位(一定比被除数少 1 位)

求得: 101001 的 CRC 码为 101001 001

拓展

模2运算:分为模2加、模2减、模2乘、模2除,不考虑进位和借位。

检错与纠错

注意: 余数与出错位的规律,并不是简单的余数的二进制转十进制,因为有三位对应二的三次方即为八除去正确的 000 ,即为七个一循环。

纠错概述

但是实际一般运用于检错

特点

理论上可以证明循环冗余校验码的检错能力有以下特点:

1)可检测出所有奇数个错误;

2)可检测出所有双比特的错误;

3)可检测出所有小于等于校验位长度的连续错误;

总结

java 偶校验_一文搞定校验码(奇偶校验,海明,CRC 码)相关推荐

  1. php带参数单元测试_一文搞定单元测试核心概念

    基础概念 单元测试(unittesting),是指对软件中的最小可测试单元进行检查和验证,这里的最小可测试单元通常是指函数或者类.单元测试是即所谓的白盒测试,一般由开发人员负责测试,因为开发人员知道被 ...

  2. 一文搞定校验码(奇偶校验,海明,CRC 码)

    文章目录 效验码 计算码距方法 奇偶校验码 校验原理 奇偶校验 异或法制 总结 海明校验码 海明校验码的分布规律 海明码纠错以及定位 实现原理 海明码完善 总结 循环冗余校验码(CRC) 模2除算法 ...

  3. java+输出流++空值_一文搞定Java的输入输出流等常见流

    点赞再看,养成习惯,常用流,多看多练准没错!文章较长,建议收藏再看! 1.IO流分析 什么是IO? I:Input O:Output 通过IO可以完成对硬盘的读和写. IO流的分类. 有多种分类方式: ...

  4. JAVA数组扁平化整合_一文搞定数组扁平化(超全面的数组拉平方案及实现)

    前言 面试手写代码在大厂面试中非常常见,秋招中面试小米就手写了一道flat实现的代码题,当时通过递归方式实现了数组扁平化逻辑,但没有考虑多种实现方案及其边界条件(主要是对所涉及到高阶函数的知识点不够熟 ...

  5. koa 接口返回数据_一文搞定 Koa 中间件实现原理

    Koa是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小.更富有表现力.更健壮的基石. 通过利用 async 函数, Koa ...

  6. hfss matlab联合仿真_一文搞定matlab 与 STK 联合调试仿真环境配置(文末附软件下载链接)...

    最近在做导师给的课题:卫星星座的快速优化设计. 需要用到matlab 和 STK 来进行联合调试仿真,但是这第一步的环境配置就让我头疼了几天.在好几次重装,失败和查找资料之后,我终于成功实现了matl ...

  7. import 快捷键 自动调整顺序_一文搞定PPT中的快捷键

    不知道大家有没有见到过会PS的同学工作时的场景:一手鼠标移动.指点,另一手在键盘上噼里啪啦按键,屏幕上肉眼可见的速度出现了他们的作品. 操作速度非常快,非常让人羡慕他们的熟练程度. 他们对PS的快捷键 ...

  8. wpf怎么让grid表格中元素显示到最顶层_一文搞定PPT中的快捷键

    点击上方"锦乡悦堂",一起愉快的学习吧! 不知道大家有没有见到过会PS的同学工作时的场景:一手鼠标移动.指点,另一手在键盘上噼里啪啦按键,屏幕上肉眼可见的速度出现了他们的作品. 操 ...

  9. 旋转数组的最小数 php 牛客网_一文搞定—移掉K个数字amp;amp;旋转数组amp;amp;全排列...

    给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小.注意:num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. (1)本不该,单独开一章节来讲 ...

最新文章

  1. 文件控制 fcntl函数具体解释
  2. bash 判断 os 版本_Kali Linux 2020.3开始用ZSH取代Bash旅程
  3. xmind快速上手使用教程,提高工作效率
  4. 第1课 - make和makefile
  5. 数据结构——图:极大小连通子图、图的存储结构、图的遍历
  6. loadrunner与事务有关的函数
  7. 河北师范大学C语言试题,2017年河北师范大学信息技术学院838C语言程序设计考研强化模拟题...
  8. Jquery 温习,温故而知新,可以为师矣
  9. Elasticsearch如何关掉服务
  10. 2010浙大878计算机专业基础综合解析
  11. mybaits 返回ListString
  12. android实现高德地图实时导航,高德地图之实时导航
  13. 百度快排点击软件-搜索引擎排名模拟点击器-快排点击软件
  14. 基于Android10的忽略HTTPS证书校验
  15. 2022房地产最新消息
  16. sqlmap tamper mysql_Sqlmap Tamper大全(1)
  17. 真香!安利 6 个 Python 数据分析神器
  18. 【深度学习】ResNet50
  19. 2021年十大最有前途的编程语言,第1名实至名归or名不副实?
  20. ARP伪造网关攻击学习

热门文章

  1. zookeeper 负载均衡原理
  2. 重磅推荐腾讯最新开源项目!
  3. 恒玄BES调试笔记-BES2500 GPIO常规操作示例
  4. CentOS安装gnome dask to dock插件
  5. websocket 302错误
  6. java中int的取值范围是多少
  7. Java企业信息化系统,开源OA openSource OA Platform 本地搭建运行。
  8. 【Rust 日报】2021-09-16 Pipette: 一个模仿 Elixir 的管道操作的包,没有使用宏
  9. 【C语言】卍字通晓→函数+递归
  10. 使用xlsx-js-style表格导出,合计,单元格居中,多级表头合并,添加序号