海明码的概念是什么

发布时间:2024-06-14 15:22:22   编辑:雪原皓月 

一、什么是海明码

海明码是在原数据中的一些固定位置,插入一个0(或1),以进行奇(或偶)校验位,虽然使原数据变长,但可使其拥有纠错能力。

能侦测并更正一个比特的错误;

若有两个比特出错,则只能侦测,不能更正;

若有三个或更多的比特出错,则不能侦测,更不能更正。


二、海明码简述

  • 假设 数据位为 n 位,校验位有 k 位,则海明码有 n + k 位,且 n 和 k 需满足 2 − 1 ≥ n + k 等式( 可以用 2k − 1 > n 简化计算 )。如:

当 n = 8 时,则 k = 4 ;

当 n = 16 时,则 k = 5 。

  • 用符号 D 代表数据位,P 代表校验位,H 代表海明码,则 P = 2−1 ,也就是说 第 i 个校验位在海明码的第 2−1 个位置上。当确定好校验位在海明码的位置之后,剩下的位置则由数据位进行填充。(也就是2的幂次方位上)
  • 每一位海明码都会被校验到,其中,被校验的海明码它的下标等于参与校验的所有检验码下标之和( 对应存放 D 时 ),而校验位由自身校验( 对应存放 P 时 )。

如上:校验位p由自己校验,数据位H(x)由最靠近自己的校验位P(i)对应的数据位H(i)加上最近的检验位P(i)前面的校验位P(j)对应的数据位H(j),即H(x)=H(i+j)

如:H11前一位P4对应H8,则应该加上H3,由于H3是数据位,则往前推,加上H2和H1,分别对应P4 P2 P1

异或运算的规则是:

0 ⨁ 0 = 0 0 ⨁ 1 = 1

1 ⨁ 1 = 0 1 ⨁ 0 = 1

三、海明码纠错

接收端在接收到海明码后,对将校验位 P 与其相对应的数据位 D 进行异或运算,并根据运算结果生成编码结果 G4G3G2G1(这里还是以数据位 8 位时举例,若是 16 位,则结果为 G5G4G3G2G1)。

注意观察 P 和后面的 D 组数据之间的关系,如果进行偶检验,没有错误时,G4、G3、G2、G1 应该全为0( 奇校验时无错全为1 )。不全为0则说明发生了错误,且 G4、G3、G2、G1的值化成十进制值 m 就指出了海明码的第 m 个位置出现了错误,如 G4、G3、G2、G1 = 1110 说明海明码 H7出现了错误。

四、示例

若要传输的值为10101101,则根据上述校验值P(a)为0100,假设传输中出现差错,接收方,接收值为10100101,则当前校验值P(b)为0011,P(a)与P(b)异或运算后值G为0111,换算为十进制值为7,则可知第七位H7出错,将该位求反,即0求反为1,接收差错值可由10100101纠错为正确值10101101


H12

H11

H10

H9

H8

H7

H6

H5

H4

H3

H2

H1


D7

D6

D5

D4

P4

D3

D2

D1

P3

D0

P2

P1

数据

1

0

1

0


1

1

0


1



校验值A





0




1


0

0

接收值

1

0

1

0


0

1

0


1



接收后校验值B





0




0


1

1

AB异或运算G





0




1


1

1

你感兴趣的

冈底斯锅炉客服号码售后号码大全及维修网点查询实时反馈-今-日-汇-总

2025-04-22100阅读

恒仕宝保险柜维修售后号码24小时丨全国400服务点实时反馈-今-日-资-讯

2025-04-22100阅读

融银之汇保险柜服务号码-故障报修热线号码实时反馈-今-日-资-讯

2025-04-22100阅读

装甲防盗门客服号码售后号码大全及维修网点查询实时反馈-今-日-汇-总

2025-04-22100阅读

首力防盗门用户售后服务中心实时反馈-今-日-汇-总

2025-04-22100阅读