从本质看海明码——海明码的由来

陈冠斌

1.奇偶校验以及奇偶校验错误率

奇偶校验:每一位(包括校验位)都进行异或运算,结果为0

如x1~x7,y0 (数据位为x1~x7,校验位为y0),则

x1 xor x2 xor ... xor x7 xor y0 = 0。

错误概率:

设共有n位,每一位的错误概率均为x

则错误k位的概率:C(n,k) * xk * (1-x)n-k

总概率:V = C(n,1) * x1 * (1-x)n-1 + C(n,3) * x3 * (1-x)n-3+ ...

而:

S =  C(n,0) * x0 * (1-x)n + C(n,1) * x1 * (1-x)n-1 + ... + C(n,n) * xn * (1-x)0 = [x+(1-x)]n = 1

T =  C(n,0) * x0 * (1-x)n - C(n,1) * x1 * (1-x)n-1 + C(n,2) * x2 * (1-x)n-2 - ... =[(1-x)-x]n = (1-2x)n

V = (S - T) / 2 = [ 1 - (1-2x)n ] /2 = x - 2*C(n,1)*x2 + 4*C(n,2)*x3 - ...

由于x较小,x后面的项大致可以忽略,值约为x。

这与C(n,1) * x1 * (1-x)n-1 把1-x估计为1时的值时一致的。

如x=0.00001,x2过于小了,所以一般传输错误的话,只考虑一位错误。

2. 设计可以检验错误位数的方法(海明码的由来)

若想知道错误的位置,则通过多个式子共同判断,假设数据位为x1~xn-1,全体域为F,错误位置为xc,第i(0<=i<m-1)个式子的数据位集合为Si,数据位进行异或运算,结果为yi,有:

xor {S0} = y0

xor {S1} = y1

……

xor {Sm-1} = ym-1

这些式子和方程式不一样,它比方程式多了一个约束条件,这个约束条件是x1~xn有且仅有一个值为1,其它值为0。

对于值为1的第k个式子,等价为xc∈Sk,存在错误位;

对于值为0的第k个式子,等价为xc∈`Sk

m个式子中,每个式子可以把全体域分为两部分,Sk和`Sk(即F-Sk),根据不同的yk值,选择其中一个集合。

错误位属于集合S0(`S0) ∩ S1(`S1) ∩ …∩ Sm-1(`Sm-1)。

如:x1,x2,x3为数据位,y0,y1为检验位。

x1 xor x3 = y0 = 0 (i)

x2 xor x3 = y1 = 1 (ii)

即S0={x1,x3},y0=0 ; S1={x2,x3},y1=1。

错误位属于集合{x2}∩{x2,x3}={x2},即错误位为x2

设n位二进制数ym-1ym-2…y0为Y。对于任意一个数据位,它要么在Sk中,标记yk=1;要么在`Sk中,标记yk=0。对于数据位x1~xm-1的任意一个数,若它表示m位二进制数zm-1m-2…z0,则第k个式子对应的值yk为zk。其中数据位x1~xn-1对应的ym-1ym-2…y0的值都不相等,共有2-1种可能性,其中若ym-1ym-2…y0的值都为0,则代表无错误位。

以下是n=3时的情况:

(4)   x4 xor x5 xor x6 xor x7 = y2

(2)   x2 xor x3 xor x6 xor x7 = y1

(1)   x1 xor x3 xor x5 xor x7 = y0

y2

0

0

0

0

1

1

1

1

y1

0

0

1

1

0

0

1

1

y0

0

1

0

1

0

1

0

1

Y

0

1

2

3

4

5

6

7

Error

None

x1

x2

x3

x4

x5

x6

x7

对于上述方式,ym-1,ym-2,…,y0的位置还没确定下来。可以把ym-1,ym-2,…,y0放在第2m-1,2m-2,…,20位,所有yk所在位置的值加起来,就是Y的值,即XY数据位发生错误(如果XY=0,则没有数据位发生错误)。其中第2m-1,2m-2,…,20位有且只有一次参与了运算,把它们当作校验位,可认为x2^(m-1),x2^(m-2),…,x的值为0。把x1,x2,x4…用x1+2^n,x2+2^n,x4+2^n…替代。如上文:

数据位为x3,x5,x6,x7,x9,x10,x11,x12

(4)   x12 xor x5 xor x6 xor x7  = y2

(2)   x10 xor x11 xor x6 xor x7 = y1

(1)   x9 xor x3 xor x5 xor x7  = y0

此时的这个方式称为海明码校验。

针对计算,比较有规律,可以通过硬件电路提高速度。

数据位:

从1开始,检验1位,跳转1位;[1,3,5,7,9,11……]

从2开始,检验2位,跳转2位;[2,3,6,7,10,11,……]

从4开始,检验4位,跳转4位;[4,5,6,7,12,13,14,15,……]

……

检验位:

每次乘以2,即二进制数每次左移一位。

方式

检验码

检验位数

总位数

参与运算总次数

海明码校验

n

2n -1

2n -1+n

n*2n-1

转载于:https://www.cnblogs.com/cmyg/p/8877515.html

从本质看海明码——海明码的由来相关推荐

  1. 校验码(海明校验,CRC冗余校验,奇偶校验)

    循环冗余校验码 CRC码利用生成多项式为k个数据位产生r个校验位进行编码,其编码长度为n=k+r所以又称 (n,k)码. CRC码广泛应用于数据通信领域和磁介质存储系统中. CRC理论非常复杂,一般书 ...

  2. 校验码——海明码及码距,码距

    相关文章: 校验码--码距   https://blog.csdn.net/weixin_44330072/article/details/106860286 校验码--奇偶校验码   https:/ ...

  3. 一文搞定校验码(奇偶校验,海明,CRC 码)

    文章目录 效验码 计算码距方法 奇偶校验码 校验原理 奇偶校验 异或法制 总结 海明校验码 海明校验码的分布规律 海明码纠错以及定位 实现原理 海明码完善 总结 循环冗余校验码(CRC) 模2除算法 ...

  4. java 偶校验_一文搞定校验码(奇偶校验,海明,CRC 码)

    效验码 校验码:指能够发现或能够自动纠正错误的数据编码,也称检错纠错编码. 实现原理:通过加一冗余码,来检验或纠错编码 码字 : 由若干位代码组成的一个字 码距:将两个码字逐位进行对比,具有不同的位的 ...

  5. java 奇偶校验_校验码(海明校验,CRC冗余校验,奇偶校验)

    循环冗余校验码 CRC码利用生成多项式为k个数据位产生r个校验位进行编码,其编码长度为n=k+r所以又称 (n,k)码. CRC码广泛应用于数据通信领域和磁介质存储系统中. CRC理论非常复杂,一般书 ...

  6. [动态代理三部曲:下] - 从动态代理,看Retrofit的源码实现

    前言 关于动态代理的系列文章,到此便进入了最后的"一出好戏".前俩篇内容分别展开了:从源码上,了解JDK实现动态代理的原理:以及从动态代理切入,学会看class文件结构的含义. 如 ...

  7. 看不见的Unicode码让敏感词轻松逃过审核,谷歌IBM都中招

    丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI Unicode码作为全世界文字的统一编码,使用范围广,用它去对NLP模型做对抗攻击,可谓中招一大片. 就比如下面这个谷歌翻译: 文字部分都没 ...

  8. 从一道面试题,到“我可能看了假源码[2]

    上一篇从一道面试题,到"我可能看了假源码"中,由浅入深介绍了关于一篇经典面试题的解法. 最后在皆大欢喜的结尾中,突生变化,悬念又起.这一篇,就是为了解开这个悬念. 如果你还没有看过 ...

  9. 字节跳动面试官问我看过哪些源码,然后就没有然后了

    最近,我的一位朋友在找工作,已经拿到了美团.快手等公司的Offer,准备选择其中一家入职了. 后来他又接到了字节跳动的电话,通知他去参加三面.从二面到三面之间隔了挺久的,他以为都没戏了,结果就收到了通 ...

最新文章

  1. 企业/团队如何实行绩效管理,促进团队智慧高效办事?
  2. 开发管理 (2) -规划项目
  3. 活久见!一美国大爷发明了永不掉链子的自行车,垂直踩踏即可驱动
  4. B-TREE、B+TREE、数据库索引
  5. 口译分类词汇:上海景点名集锦
  6. 微信语音遥控Windows Azure云虚拟机
  7. java中成绩转换_成绩转换
  8. 国二office计算机基础知识,国二office计算机基础知识选择题
  9. 吴恩达深度学习作业之deepleraning_L1W2_h2
  10. uniapp手机定位或者uniapp结合原生安卓定位
  11. 用Python爬取某网中小说内容代码分享
  12. 全国计算机专业评估结果出炉;编程错误导致俄罗斯卫星发射失败
  13. BUCK电路输入电容计算
  14. 关于adsl宽带猫的一个奇怪问题
  15. 真正的通过手机控制PPT播放
  16. esp分区创建 linux_EFI引导Ubuntu。分区如何手动创建
  17. 服务器内存 知乎_内存的差距——服务器内存和普通PC内存的区别
  18. 5个超好用的在线抠图网站,告别繁琐的PS,快马住!
  19. 在html中显示本地图片
  20. 【BZOJ2246】[SDOI2011]迷宫探险(搜索,动态规划)

热门文章

  1. Directx9播放视频
  2. linux安装oracle jdk
  3. 【原】斐波那契质数(Fibonacci Prime)详解
  4. nRF52840是Nordic Semiconductor低功耗多协议蓝牙5.3
  5. git 删除远程文件
  6. Yum,搭建软件仓库
  7. 2022年全球首饰用合成钻石行业分析报告
  8. 若菜acmer感觉自己智商完全被碾压了QAQ~~
  9. BCompare 过期处理
  10. 什么是 SYN 攻击?如何避免 SYN 攻击?