常用校验码(奇偶校验码、海明校验码、CRC校验码)

转载自:https://www.cnblogs.com/VersionP1/p/7779251.html ,作者: FunnyOne 

 

常用校验码(奇偶校验码、海明校验码、CRC校验码)

一、奇偶校验码
二、海明校验码
三、CRC校验码

  计算机系统运行时,各个部之间要进行数据交换.交换的过程中,会有发生误码的可能(即0变成1或1变成0),由于计算机的储存是通过二进制代码来实现的的,误码会导致储存的内容发生改变。为确保数据在传送过程正确无误,常使用检验码. 我们常使用的检验码有三种. 分别是奇偶校验码海明校验码循环冗余校验码(CRC) 。

 

一、奇偶校验码

 

学习资料:常用校验码

概念:

  奇偶校验码是奇校验码偶校验码的统称. 它们都是通过在要校验的编码上加一位校验位组成.

校验方法:

  如果是奇校验加上校验位后,编码中1的个数为奇数个。如果是偶校验加上校验位后,编码中1的个数为偶数个

分类:

  1. 水平奇偶校验码:对每一个数据的编码添加校验位,使信息位与校验位处于同一行

例子:

原编码奇校验偶校验
00000000 10000 0
00100010 00010 1
11001100 11100 0
10101010 11010 0

当原编码在传输、储存的过程中发生了误码,1的数量就会改变,然后就能校验出该过程出现了错误。

  1. 垂直奇偶校验码:把数据分成若干组,一组数据排成一行,再加一行校验码. 针对每一行列采用奇校验 或 偶校验

缺点:

  1. 只能检测出奇数位出错. 如果发生偶数位错误就无法检测

  设原编码为0000,传输的过程中变成了1001。如果使用奇校验,原编码是00001,传输过后会变成10011,1仍然是奇数个,无法校验;如果使用偶校验,原编码是00000,传输过后会变成10010,1仍然是偶数个,同样无法校验。

  1. 奇偶校验码无法检测出哪位出错.所以属于无法矫正错误的校验码。

  校验过程中只知道1的数量发生变化,对于哪个地方发生变化无从知道。

二、海明校验码

学习资料:海明校验码

实现原理:

  它的实现原理,是在m个数据位之外加上k个校验位,从而形成一个m+k位的新的码字,使新的码字的码距比较均匀地拉大。把数据的每一个二进制位分配在几个不同的偶校验位的组合中,当某一位出错后,就会引起相关的几个校验位的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为进一步自动纠错提供了依据。

两个码组对应位上数字的不同位的个数称为码组的距离,简称码距

例:

这两个二进制码中,有三个不相同的位置,所以码距为3.

须知:

  1. 海明校验码是放在2的幂次位上的,即“1,2,4,8,16,32······”;
  2. 信息位为m的原始数据,需要加入k位的校验码,它满足m+k+1<2^k;

例子:

要计算原始信息位为101101100的海明校验码。

先用m+k+1<2^k计算出校验位:9+k+1 <2^k→k=4,即校验位为4位。

因为海明校验码是放在2的幂次位上,所以插在位置1,2,4,8中

用到的校验码是看 当前位置由哪几个 校验码所在的位置的和

  • 例如

校验码的位置是1,2,4,8。位置3= 1 + 2,所以位置3用到的校验码是1和2;位置7 = 1 + 2 + 4组成的,所以位置7用到的校验码是1,2和4。

然后将校验码校验的位置记录下来:

  • 校验码1(位置1):3,5,7,9,11,13
  • 校验码2(位置2):3,6,7,10,11
  • 校验码3(位置4):5,6,7,12,13
  • 校验码4(位置8):9,10,11,12,13

注意:后面的数字串是位置的下标,不是值,值还是0或1。

然后做异或运算(相同时为0,不同时为1)

  • 校验码1(位置1):1 xor 0 xor 1 xor 0 xor 1 xor 0 = 1
  • 校验码2(位置2):1 xor 1 xor 1 xor 1 xor 1 = 1
  • 校验码3(位置4):0 xor 1 xor 1 xor 0 xor 0 = 0
  • 校验码4(位置8):0 xor 1 xor 1 xor 0 xor 0 = 0

三、循环冗余校验码(CRC校验)

学习资料:CRC的校验原理以及例子

原理:CRC检验原理实际上就是在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列;附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。

实现步骤:

双方事先约定了一个R次多项式g(x),即CRC码

CRC码的特点:

  • 位数要少于原编码
  • 收尾为1
  • 自行决定

例:

原编码:1001001011

则CRC码可以为10011,也可以为11001等

但是:10010这种不可以,因为它的尾巴不是1,1001101011也不行,因为它的位数与原编码的一致。

要注意的是:CRC码并非是校验码,但需要通过CRC码来获得校验码。具体校验码的话要先让原编码加上CRC码位数个0(即CRC码有的多少位,就要加上多少位0在原编码的后面)然后用新原编码除CRC码,得到的余数就是校验码

例:

原编码=1010001101

CRC码设为:110101

校验码有5位,因此

新原编码:101000110100000

然后用新原编码除以CRC码:

校验码就是01110

校验方法

用原编码与校验码进行模2减法,获得最终原编码。此时最终原编码除以CRC码是可以整除的,由于接收方也有相同的CRC码,在数据传输的过程中不发生错误,接收方用接收到的数据除以CRC码也是可以整除的,此时为无错误。同时,不能整除,说明传输过程中数据发生了错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/553953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

原码、反码、补码、移码

版权声明&#xff1a;本文为CSDN博主「刘水镜」的原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接及本声明。 原文链接&#xff1a;https://blog.csdn.net/liushuijinger/article/details/7429197 原码&#xff1a; 如果机器字长为n&#…

【计算机系统】指令流水线

前言 流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各部件同时处理是针对不同指令而言的&#xff0c;比如说&#xff0c;指令流水线把一条指令分为取指、分析和执行3部分&#xff0c;可以同时处理取指和分析&#xff0c;但是不能同时处理一个部…

win7系统蓝屏代码0x0000003b怎么修复

蓝屏问题是操作系统无法从错误中恢复时&#xff0c;为保护电脑数据文件而强制显示的屏幕图像。并且给用户提供错误代码方便排查&#xff0c;那win7系统蓝屏代码0x0000003b怎么修复呢?就此问题&#xff0c;下面小编介绍win7系统蓝屏代码0x0000003b的修复方法。 win7系统蓝屏代…

计算机系统存储器分类和总线分类

计算机系统存储器分类 1、按存储介质 半导体存储器&#xff1a;用半导体器件组成的存储器。磁表面存储器&#xff1a;用磁性材料做成的存储器。光存储器 2、按存储方式 随机存储器&#xff1a;任何存储单元的内容都能被随机存取&#xff0c;且存取时间和存储单元的物理位置无…

win7看视频卡顿或声音画面不同步的解决步骤

win7看视频卡顿或声音画面不同步怎么办?相信大家在使用电脑观看视频的时候&#xff0c;都有遇到视频卡顿或声画不同步的情况吧&#xff0c;非常影响观看体验。发生这个问题的原因可能是视频本身有问题或者声卡出现问题了。接下来就让小编给大家讲讲win7看视频卡顿或声音画面不…

win7系统怎么打开屏幕键盘

win7系统怎么打开屏幕键盘?我们在电脑没有接入键盘或者键盘失灵等情况下&#xff0c;如果想要输入内容&#xff0c;可以使用系统自带的屏幕键盘。只需要在控制面板中打开屏幕键盘就可以使用了&#xff0c;下面就让我们一起看看win7系统屏幕键盘打开教程吧。 win7系统怎么打开…

Gantt(甘特图)与PERT(项目计划评审技术)图,项目关键路径和松弛时间

甘特图也叫做进度管理图。 他是一种简单的水平条形图&#xff0c;它以日历为基准描述项目任务&#xff0c;水平轴表示日历时间线&#xff0c;每一个线条表示一个任务&#xff0c;任务名称垂直的列在左边列中&#xff0c;图中的线条的起点和终点对应水平轴上的时间&#xff0c;…

win7系统更改密码策略的设置方法

win7的密码策略关系着我们的密码格式、密码需要的字符等&#xff0c;如果我们设置的密码策略太过复杂&#xff0c;可能会让我们在使用密码时非常麻烦&#xff0c;但是也会让我们的密码更难被入侵&#xff0c;那么win7系统如何更改密码策略呢?就此问题&#xff0c;下面一起来看…

软件风险基础知识

在软件开发和实际应用过程中&#xff0c;都会存在一定的风险&#xff0c;而对于该种风险的规避则已经成为软件测试工作开展过程中的核心所在。 软件风险管理的概念&#xff1a; 在软件开发过程中所遭遇到的预算和进度问题以及部分对软件项目会产生影响的因素&#xff0c;都被称…

U盘出现拒绝访问怎么解决

使用U盘启动盘安装系统时需要用到U盘&#xff0c;但是当我们将U盘插上电脑&#xff0c;结果出现拒绝访问的情形&#xff0c;别说是使用U盘启动盘重装系统了&#xff0c;连U盘基础的文件存储功能都无法使用。当U盘出现拒绝访问怎么解决呢?就此问题&#xff0c;下面小编分享u盘拒…

学习阮一峰Javascript模块化编程,requireJS使用

使用背景NOW&#xff1a; 网站功能逐渐丰富&#xff0c;网页中的js也变得越来越复杂和臃肿&#xff0c;原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式。 项目需要一个团队分工协作、进度管理、单元测试等等......开发者不得不使用软件工程的…

猎豹浏览器禁止跟踪怎么开启 禁止跟踪功能开启方法

为了防止第三方网站跟踪用户活动&#xff0c;包括猎豹浏览器在内的多款浏览器产品都上线了“禁止追踪”功能。不过&#xff0c;需要注意的是&#xff0c;“禁止追踪”功能是需要手动开启的!那么&#xff0c;该怎么操作呢?下面小编就以“猎豹浏览器”为例&#xff0c;分享一下禁…

阮一峰的学习Javascript闭包(Closure)

闭包&#xff08;closure&#xff09;是Javascript语言的一个难点&#xff0c;也是它的特色&#xff0c;很多高级应用都要依靠闭包实现。 下面就是我的学习笔记&#xff0c;对于Javascript初学者应该是很有用的。 一、变量的作用域 要理解闭包&#xff0c;首先必须理解Javas…

IE浏览器打不开网页有什么解决的方法

IE浏览器打不开网页有什么解决的方法 更新时间&#xff1a;2021-06-06 15:35:38   IE浏览器是Windows电脑自带的浏览器&#xff0c;兼容性强&#xff0c;受到很多用户的喜欢&#xff0c;但是在使用的过程中难免会出现一些问题&#xff0c;比如就有用户发现自己的IE浏览器打不…

阮一峰的JavaScript 的 this 原理

一、问题的由来 学懂 JavaScript 语言&#xff0c;一个标志就是理解下面两种写法&#xff0c;可能有不一样的结果。 var obj {foo: function () {} };var foo obj.foo;// 写法一 obj.foo()// 写法二 foo()上面代码中&#xff0c;虽然obj.foo和foo指向同一个函数&#xff0c;…

win7系统5分钟自动注销的解决方法

我们在电脑使用的过程中&#xff0c;有时候会遇到过5分钟就自动注销的情况。一般来说都是因为电脑中了病毒&#xff0c;启动程序遭到了恶意修改&#xff0c;或者系统启动文件因为某些操作删除或损坏了&#xff0c;我们可以用下面的方法尝试解决。 win7系统5分钟自动注销的解决…

计算机基础:IP地址,子网掩码,默认网关,DNS服务器

如图各项IP地址、子网掩码、默认网关、DNS服务器分别都代表什么意思 &#xff08;一&#xff09;IP地址 IP是32位二进制数据&#xff0c;通常以十进制表示&#xff0c;并以“.”分隔。IP地址是一种逻辑地地址&#xff0c;用来标识网络中一个个主机&#xff0c;IP有唯一性&#…

win7系统如何更改密码策略

win7的密码策略关系着我们的密码格式、密码需要的字符等&#xff0c;如果我们设置的密码策略太过复杂&#xff0c;可能会让我们在使用密码时非常麻烦&#xff0c;但是也会让我们的密码更难被入侵&#xff0c;那么win7系统如何更改密码策略呢?就此问题&#xff0c;下面一起来看…

js基础中Null、undefined、NaN、false、0、{}的理解及使用

数据类型&#xff1a; 值类型(基本类型)&#xff1a;字符串&#xff08;String&#xff09;、数字(Number)、布尔(Boolean)、对空&#xff08;Null&#xff09;、未定义&#xff08;Undefined&#xff09;、Symbol。 引用数据类型&#xff1a;对象(Object)、数组(Array)、函数…

解决vue的{__ob__: observer}取值问题

vue编码中经常出现获取到的数据是&#xff1a;{__ob__: Observer} 格式的&#xff0c;详细如下 可能导致后续数据操作错误&#xff0c;如何获取其中的数值呢 解决方法如下&#xff1a; 将返回的数据data先转换为JSON字符串形式&#xff0c;然后再从字符串形式转换成JSON格式JS…