数据校验码概述

[TOC]

奇偶校验码

最简单实用的一种校验数据的方式。在原始数据的后面加一个校验位来实现数据的校对。

若原始数据为:\(D=(D_1,D_2...D_n)?\)

偶校验:$D_偶 = D_1 \bigoplus D_2 \bigoplus...D_n $

奇校验:\(D_奇 = \overline{ D_1 \bigoplus D_2 \bigoplus...D_n }\)

验算时:

\(F = \overline{D_1 \bigoplus D_2 \bigoplus...D_n \bigoplus D_奇}\)

\(F = D_1 \bigoplus D_2 \bigoplus...D_n \bigoplus D_偶\)

如果 \(F\) 的值为 0 ,则传输正确,否则错误

奇偶校验码只能检查一位错,并且无法纠错

海明检验码

若一共有 k 个数据位,则需要 r个检验位来完成一位纠错,两位检错。

$ 2^{r-1} \geq k + r$

新生成的数据为 k+r位,其中每个校验位放在2的幂次方的位置上

其值为原始数据位在新的排列后,其位次的二进制中有对应位的数的异或和

最后一个校验位的值是前面所有位的异或和,其作用是判断是一位错还是两位错

当接收方接收数据后。先看最后一位,若是1则代表一位错。具体位置由各个位置的海明码组成的二进制表示。

若是0,则若是其他位校验码都是0表示传输正确,否则就是两位错。

CRC循环校验码

前置技能:模2除法

传输前双方约定好一个二进制串,设长度为r,要求最高位和最低位的值必须为1

先将原始数据右移r-1位,低位补0。

然后将这个数除之前的二进制串,得到的余数和之前处理好的数据相加。得到校验码。

PS.这个余数一定是要r-1位的,若不够则高位补0

原文地址:https://www.cnblogs.com/SCaryon/p/9240702.html

时间: 2024-08-30 07:49:53

数据校验码概述的相关文章

Hamming校验码

可参考:http://winda.blog.51cto.com/55153/1068000 Hamming校验码作用:用于校验通信数据,防止出现错误,并具有一定的纠错功能. 汉明码在传输的消息流中插入验证码,当计算机存储或移动数据时,可能会产生数据位错误,以侦测并更正单一比特错误.由于汉明编码简单,它们被广泛应用于内存(RAM). 1,获取最小校验码位数:对于有n个信息位的信息,需要k个校验位,满足:2^k-1>=n+k;使k最小即可得出n个信息位所需最小的校验码数: 2,确定校验码所在位置:共

海明校验码

原博地址:http://blog.csdn.net/yudandan10/article/details/11878421  计算机组成中的海明校验码,相信学过的都会有了解,那么对其中校验位的确定,我想似乎有些人不是很明白,今天我来详细的把如何确定校验位分享一下 首先看下基本的概念  : 2^r≥k+r+1 其中r为校验位 ,k为信息位  信息位是已知的,那么如何确定校验位呢,用一个例子来说明 例如:二进制码1011  求它的海明编码 步骤如下: 1.首先确定信息位,也就是1011了,那么随之K

RestEasy 3.x 系列之四:使用Hibernate_Validator进行数据校验

使用Hibernate_Validator进行数据校验,好处不言而喻:规范统一,低耦合度. 1.pom.xml <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.0.1.Final</version> </dependency> <dependency&

Redis源码中的CRC校验码(crc16、crc64)原理浅析

在阅读Redis源码的时候,看到了两个文件:crc16.c.crc64.c.下面我抛砖引玉,简析一下原理. CRC即循环冗余校验码,是信息系统中一种常见的检错码.大学课程中的"计算机网络"."计算机组成"等课程中都有提及.我们可能都了解它的数学原理,在试卷上手工计算一个CRC校验码,并不是难事.但是计算机不是人,现实世界中的数学原理需要转化为计算机算法才能实现目的.实际上作为计算机专业背景人并不会经常使用或接触到CRC的计算机算法实现的原理,通常是电子学科背景的人士

.net 使用validator做数据校验

概述 在把用户输入的数据存储到数据库之前一般都要对数据做服务端校验,于是想到了.net自带的数据校验框架validator.本文对validator的使用方法进行介绍,并分析下校验的的原理. 使用validator校验数据 首先我们创建一个需要校验的实体类代码如下: [Table("apple")] public class Apple { public Guid Id {get;set;} [MaxLength(3,ErrorMessage="名称长度不能超过3个"

计组_海明校验码

原理: 在数据中加入几个校验码,并把数据的每一个二进制位分配在几个奇偶校验组中. 设:校验位的个数为r,能表示2^r个信息,1个表示“没错误”, 2^r -1个指出错误发生在哪一位. k= 2^r –1-r个信息可用于纠正数据位. 2^r≥k+r+1 若要检测并纠正一位错,同时发现两位错,r,k应满足下列关系: 2^r-1≥k+r      (见表3.8) 校验位和数据位是如何排列的 校验位排列在  2^(i–1) (i =0,1,2,…)的位置上 例:有一个编码 为D4D3D2D1,由此生成一

md5和SHA校验码

md5已经不安全了,中国山东大学女学霸王小云破解了一系列密码,当真是巾帼不让须眉.说是破解,其实就是给你一个md5码,让你求出这个md5码所对应的原始信息,显然一个md5对应无数种原始信息.而md5的特性就是难以还原初始信息,但是王小云可以迅速找到给定md5码的可行解.md5的解空间虽然巨大,但是却难以捕捉到解. md5虽然已经不安全了,但是仍然可以用于校验. md5不是编码,编码是能够还原初始信息的,而md5只是固定的16byte,它只能从总体上反映初始信息的一些特征,却无法完整的还原出来,因

信管备考知识点精讲·计算机硬件基础之校验码

信息系统管理工程师是全国计算机技术与软件专业技术资格考试(简称计算机软件资格考试)中的一个中级考试.信息系统管理工程师考试要求考生掌握计算机系统.操作系统.数据库.计算机网络.信息化和信息系统等相关知识内容.信息系统管理工程师考试要求掌握的内容宽且多,备考期间哪些内容是需要重点掌握的呢?下面跟着希赛软考学院来学习信息系统管理工程师计算机硬件基础校验码部分要重点掌握的内容. 信息系统管理工程师备考知识点精讲之校验码 奇偶校验 是一种简单有效的校验方法通过在编码中增加一位校验位来使编码中的1的个数为

Struts2(五)数据校验

一.概述 在提交表单数据时,如果数据需要保存到数据库,空输入等可能会引发一些异常,为了避免引起用户的输入引起底层异常,通常在进行业务逻辑操作之前,先执行基本的数据校验. 下面通过两种方式来阐述Struts 2的数据校验功能. 二.重写validate方法 我们编写的Action一般继承与ActionSupport,而ActionSupport不仅实现了Action接口,还实现了Validatable接口,提供了数据校验功能.在Validatable接口中定义一个validate方法,重写该方法,