博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
奇偶校检只能检出奇数个误差数学证明
阅读量:4946 次
发布时间:2019-06-11

本文共 1163 字,大约阅读时间需要 3 分钟。

1. 奇偶校检原理

有n位二进制串S = x1x2…xn

在末尾添加一个奇偶校检位xn+1

1> 当有奇数个xi为1时,xn+1 = 1

2> 当有偶数个xi为1时,xn+1 = 0

则最后得到的S2 = x1x2…xnxn+1 ,且S2总是有偶数个xi为1

校检时,取 X ≡ x1 + x2 + … + xn + xn+1  (mod 2)

                 ≡ 0

注意:奇偶校检时,并不是取最后一个校检位,然后根据其值为0或为1,再判断前面的数据位S = x1x2…xn 中1的数量为奇数或为偶数,因为在网络数据传输过程,作为奇偶校检位也是可能在传输过程中发生错误的,这样的检测就没有意义了。

 

2. 问题

奇偶校检只能检出奇数个误差,而不能检检出偶数个误差

 

3. 思路

网上和书中的证明方法很简略:

An error changes a 0 into a 1 or a one into a 0, so one error must change the sum of the digits (includ-ing the parity check bit) from even to odd. A second error will change the sum back to even, and so on.

我们这里用数学方法严格证明,在第1部分奇偶校检中,已经把校检的数学表示方法表达出来了,主要问题是,如何表达奇数个误差和偶数个误差

 

4. 证明

1> 误差个数的表达

设有 i 个 “0 → 1”的误差

   有 j 个 “1 → 0”的误差

则总误差数 k = i + j

 

2> 设发送的二进制序列(包含校检位)为:S1 = x1x2…xnxn+1 ,接收到的可能带误差的二进制序列为:S2 = y1y2…ynyn+1

设S1的奇偶校检表达式为: X ≡ x1 + x2 + … + xn + xn+1 ≡ 0(mod 2)

  S2的奇偶校检表达式为: Y ≡ y1 + y2 + … + yn + yn+1 (mod 2)

由4.1知,Y中有i个yn由“0 → 1”,有j个yn由“1 → 0”,

∴ Y ≡ X –i + j (mod 2)

根据同余算法,两边加 2i 得:

   Y + 2i ≡ X + i + j (mod 2)

   Y + 2i ≡ Y

   X + i + j ≡ X + k ≡ k  (mod 2)

∴ Y ≡ k  (mod 2)

当k为偶数时,k ≡ 2a ≡ 0(mod 2),所以Y恒为0,无法检测是否发生错误

当k为奇数时,k ≡ 2a + 1 ≡ 1(mod 2),此时Y ≠ 0,即可检测出发生错误

转载于:https://www.cnblogs.com/organic/p/6284045.html

你可能感兴趣的文章
nfs+drbd+keepalived 高可用的实现
查看>>
HttpClient
查看>>
【实践】配置服务器网络环境思路
查看>>
数组重排
查看>>
javaweb学习总结(三十八)——事务
查看>>
CRF 及CRF++ 安装与解释
查看>>
winform windowsmediaplayer的属性
查看>>
JS获取当前页面的URL信息
查看>>
条件、循环和其他语句
查看>>
记录时刻,博客原创破200大关
查看>>
.NET 4 并行(多核)编程系列之一入门介绍
查看>>
C#开发微信公众平台-就这么简单(附Demo)
查看>>
自动注册 IIS6 的 MIME 类型
查看>>
用三张图片详解Asp.Net 全生命周期
查看>>
mapreduce处理气象数据-shell脚本处理气象数据
查看>>
java关键字之this关键
查看>>
十天冲刺计划
查看>>
mongoDB1--什么是mongoDB
查看>>
【转】Linux学习之路--启动VNC服务
查看>>
MongoDB 操作数据库
查看>>