海明码的求解与校验

本文详细介绍了海明码的计算方法,包括如何根据数据位数确定校验位数,通过实例演示奇校验和偶校验的编码过程,并展示了校验码如何帮助检测和纠正接收数据的错误。通过三个步骤的校验规则,读者能理解并实践海明码在实际通信中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文以1010为例讲解

一:求海明码

必要的公式

2 p ≥ m + p + 1 2^p \geq m+p +1 2pm+p+1

m m m表示数据的位数, p p p表示校验码的位数
为什么?
因为 2 p 2^p 2p 表示总共可以的错误信息数量,应该大于等于{数据位数(m)+校验位数(p)+1个正确的情况}。
下面看我们1010的例子,知道1010这个数据的长度为4,即得到 m = 4 m=4 m=4,带入上述公式得到 p = 3 p=3 p=3
绿色为校验码
1234567
1 1 1
将序号以二进制的形式列在表里
1
(0 0 1)
2
(0 1 0)
3
(0 1 1)
4
(1 0 0)
5
(1 0 1)
6
(1 1 0)
7
(1 1 1)
p1p21p3010
如何求解 p 1 , p 2 , p 3 p_1, p_2, p_3 p1,p2,p3呢?
p 1 p_1 p1对应看三位二进制数的第一位,如果第一位是1,则与之对应,如果不是1,则不对应,如下表,易得到 p 1 p_1 p1与3(011),5(101),7(111)对应,即得到 p 1 p_1 p1 m 3 , m 5 , m 7 m_3, m_5, m_7 m3,m5,m7对应。
p 2 , p 3 p_2, p_3 p2,p3 p 1 p_1 p1计算同理,都见下面三个表。
求p1
1
(0 0 1)
2
(0 1 0)
3
(0 1 1)
4
(1 0 0)
5
(1 0 1)
6
(1 1 0)
7
(1 1 1)
                       
求p2
1
(0 0 1)
2
(0 1 0)
3
(0 1 1)
4
(1 0 0)
5
(1 0 1)
6
(1 1 0)
7
(1 1 1)
求p3
1
(0 0 1)
2
(0 1 0)
3
(0 1 1)
4
(1 0 0)
5
(1 0 1)
6
(1 1 0)
7
(1 1 1)
                    
由上述三个表,得 p 1 , p 2 , p 3 p_1, p_2, p_3 p1,p2,p3的值,计入下表
p 1 p_1 p1 m 3 m_3 m3 m 5 m_5 m5 m 7 m_7 m7
p 2 p_2 p2 m 3 m_3 m3 m 6 m_6 m6 m 7 m_7 m7
p 3 p_3 p3 m 5 m_5 m5 m 6 m_6 m6 m 7 m_7 m7
转换得到下面的表格
p 1 p_1 p1100
p 2 p_2 p2110
p 3 p_3 p3010
如果是奇校验
奇校验偶校验
p 1 p_1 p101
p 2 p_2 p210
p 3 p_3 p301
由上表可知,如果是奇校验,则有

p 1 = 0 ;   p 2 = 1 ;   p 3 = 0 p_1=0; \space p_2=1 ;\space p_3=0 p1=0; p2=1; p3=0

可得1010的海明码为
奇校验和偶校验的海明码
校验类型1
(0 0 1)
2
(0 1 0)
3
(0 1 1)
4
(1 0 0)
5
(1 0 1)
6
(1 1 0)
7
(1 1 1)
奇校验0110010
偶校验1011010
即最终的奇校验海明码为: 0110010 0110010 0110010,偶校验海明码为: 10111010 10111010 10111010

二、校验:

1、例一

发送与接收到的海明码
序号1234567
发送(奇校验)0110010
接收(奇校验)0110110
如上表,以奇校验为例:

发送的序列: 0110010 0110010 0110010

接收的序列: 0110110 0110110 0110110

很容易见得,接受到的信号的第5位出错(表中标红)。

我们按照约定的规则,如下表:

p 1 p_1 p1 m 3 m_3 m3 m 5 m_5 m5 m 7 m_7 m7
p 2 p_2 p2 m 3 m_3 m3 m 6 m_6 m6 m 7 m_7 m7
p 3 p_3 p3 m 5 m_5 m5 m 6 m_6 m6 m 7 m_7 m7
将接收到的信号对号入座,得下表
0110
1110
0110
计算错误码:
e 1 e_1 e10110
e 2 e_2 e21110
e 3 e_3 e30110
按照奇校验规则,得三个错误码分别为:

e 1 = 1 ;   e 2 = 0 ;   e 3 = 1 e_1 = 1;\space e_2=0; \space e_3=1 e1=1; e2=0; e3=1

按照位权关系,得错误码 e 3 e 2 e 1 = 101 e_3e_2e_1 = 101 e3e2e1=101
即,

e 3 e 2 e 1 = 5 e_3e_2e_1 = 5 e3e2e1=5

错误位为第五位。校验正确。

2、例二

发送与接收到的海明码
序号1234567
发送(偶校验)0110010
接收(偶校验)0110011
如上表,以偶校验为例:

发送的序列: 0110010 0110010 0110010

接收的序列: 0110111 0110111 0110111

很容易见得,接受到的信号的第7位出错(表中标红)。

我们按照约定的规则,如下表:

p 1 p_1 p1 m 3 m_3 m3 m 5 m_5 m5 m 7 m_7 m7
p 2 p_2 p2 m 3 m_3 m3 m 6 m_6 m6 m 7 m_7 m7
p 3 p_3 p3 m 5 m_5 m5 m 6 m_6 m6 m 7 m_7 m7
将接收到的信号对号入座,得下表
1101
0111
1011
计算错误码:
e 1 e_1 e11101
e 2 e_2 e20111
e 3 e_3 e31011
按照偶校验规则,1的个数全为奇数,得三个错误码分别为:

e 1 = 1 ;   e 2 = 1 ;   e 3 = 1 e_1 = 1;\space e_2=1; \space e_3=1 e1=1; e2=1; e3=1

按照位权关系,得错误码 e 3 e 2 e 1 = 111 e_3e_2e_1 = 111 e3e2e1=111
即,

e 3 e 2 e 1 = 7 e_3e_2e_1 = 7 e3e2e1=7

错误位为第七位。校验完成。

3、例三

发送与接收到的海明码
序号1234567
发送(奇校验)0110010
接收(奇校验)0110010
按照奇校验规则

发送的序列: 0110010 0110010 0110010

接收的序列: 0110010 0110010 0110010

很容易见得,接受到的信号没有出错。

我们按照约定的规则,如下表:

p 1 p_1 p1 m 3 m_3 m3 m 5 m_5 m5 m 7 m_7 m7
p 2 p_2 p2 m 3 m_3 m3 m 6 m_6 m6 m 7 m_7 m7
p 3 p_3 p3 m 5 m_5 m5 m 6 m_6 m6 m 7 m_7 m7
将接收到的信号对号入座,得下表
0100
0111
0010
计算错误码:
e 1 e_1 e10100
e 2 e_2 e20111
e 3 e_3 e30010
按照奇校验规则,1的个数均为奇数,得三个错误码分别为:

e 1 = 0 ;   e 2 = 0 ;   e 3 = 0 e_1 = 0;\space e_2=0; \space e_3=0 e1=0; e2=0; e3=0

按照位权关系,得错误码 e 3 e 2 e 1 = 000 e_3e_2e_1 = 000 e3e2e1=000
即,

e 3 e 2 e 1 = 0 e_3e_2e_1 = 0 e3e2e1=0

得信号正确,没有错误。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦是远方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值