博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
奇偶校检只能检出奇数个误差数学证明
阅读量:4949 次
发布时间: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

你可能感兴趣的文章
1134 最长上升子序列 (序列型 DP)
查看>>
js冒泡排序
查看>>
第一次作业 4班卢炳武
查看>>
抽象类的调用
查看>>
使用硬盘,安装双系统,Win7+CentOS
查看>>
Javascript学习总结
查看>>
php 用正则替换中文字符一系列问题解决
查看>>
ActiveMQ应用笔记一:基本概念&安装
查看>>
大话数据结构之四(串)
查看>>
加热炉简是新来的整个系统的板
查看>>
Mockito使用注意事项
查看>>
[LeetCode] Palindrome Linked List 回文链表
查看>>
UVA - 825Walking on the Safe Side(dp)
查看>>
android大概是通过logcat拦截Log
查看>>
关于codeMirror插件使用的一个坑
查看>>
评论:人才流失强力折射出现实畸形人才观
查看>>
git服务器gitlab之搭建和使用--灰常好的git服务器【转】
查看>>
基于机器学习的web异常检测——基于HMM的状态序列建模,将原始数据转化为状态机表示,然后求解概率判断异常与否...
查看>>
分享一种需求评审的方案
查看>>
虚拟运营商10月或大面积放号 哭穷背后仍有赢家
查看>>