[数据校验] 奇偶校验、海明码

1. 奇偶校验

计算机中的数据都是用0、1表示的,在物理层面,就是高电平和低电平,这就存在数据出错的可能性。

在我们下载文件的时候,我们往往需要确认一下我们下载的文件有没有损坏或者被别人修改过,这时候我们就可以使用奇偶校验来计算校验码再和官方提供的校验码做对比。

1) 计算校验码

首先讲数据进行分组,比如8位是一组,每一组对应一个校验码位。如果8位数据有奇数个1,那么校验码位就是1,如果8位数据位有偶数个1,那么校验码位就是0。

在这里插入图片描述

2) 缺陷

第一,如果是两位数据位同时发生错误,校验位不变,就检测不出来了。

第二,没有办法纠正错误

2. 海明码

海明码是可以纠正错误的一种校验码,但是只能纠正一位错误。

1) 原理

海明码是通过推理排除的方法来纠正错误的。假设数据位有K位,校验位是N位,那么我们需要满足K + N + 1 <= 2^N,也就是说,校验码也有可能出现错误。

下面我们假设数据位有4位,校验位有3位。

(1) 计算校验位

在这里插入图片描述

3位校验码分别计算排除第三位数据位、排除第二位数据位、排除第一位数据位的校验码。校验码的计算可以使用奇偶校验。

(2) 校验

进行校验的时候,如果d1出错了,则p1和p2校验失败。如果d2出错了,则p1和p3校验失败。如果d3出错了,则p2和p3校验失败。如果d4出错了,则p1、p2和p3校验都失败。

如果是校验位出错,则就是对应的校验位一位出错。

在这里插入图片描述

2) 实现

我们依旧假设4位数据位3位校验位

在这里插入图片描述

第一步,将所有位进行编号,并把编号转换为二进制

第二步,选取2的整次幂作为校验位1、2、4,剩下的作为数据位

第三步,计算校验位。p1选取二进制倒数第一位为1的编号位进行计算。p2选取二进制倒数第二位为1的编号位进行计算。p3选取二进制倒数第三位为1的编号位进行计算。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值