汉明码使用详解

汉明码是一种数据传输中校验和纠错的手段。当传输一个二进制码时,它在每一个2的整数次幂位插入校验位,如1、2、4、8…如下图所示,其中P为校验码,D为数据:

位数二进制分别为:

P1: 第1位 001;P2 第2位 010;D1 第3位 011;P3 第4位 100;D2 第5位 101; D3 第6位 110;

其中P1在第一位,二进制001,与二进制编码最后一位为1的位数的数据相异或,即D1和D2

P1=D1⊕D2

P2在第二位,二进制10,与二进制编码倒数第二位为1的位数的数据相异或,即D1 D3

P2=D1⊕D3

P3在第三位,二进制100,与二进制编码倒数第三位为1的位数的数据相异或,即D2 D3

P3=D2⊕D3

假如我们想要传输的数据为0110001100110101,你可能会说用4位校验码就能表示完全表示这个16位数,毕竟24=16,那你就忽略了这三位校验码本身,校验码插入后如下:

如上图:

P0= 异或(0 1 0 0 1 0 1 1 1 1)=0;

P1=异或(0 1 0 0 1 0 1 0 1)=0;

P2=异或(1 1 0 1 0 0 1 0 1)=1;

P3=异或(0 0 1 1 0 0 1)=1;

P4=异或(1 0 1 0 1)=1.

若传输后第11位因噪声翻转为0,则

传输数据为:010011010011001110101;

接收数据为:010011010001001110101;

将校验位与对应的数据位相异或,即可得出错误位,如下:

P4=异或(P4 1 0 1 0 1)=0

P3=异或(P3 0 0 0 1 0 0 1)=1(即异或的数据位有错误,或者说,错误的数据位的倒数第四位为1)

P2=异或(P2 1 1 0 1 0 0 1 0 1)=0

P1=异或(P1 0 1 0 0 0 0 1 0 1)=1(即错误的数据位的倒数第二位为1)

P0=异或(P0 0 1 0 0 0 0 1 1 1 1)=1(即错误的数据位的倒数第一位为1) 得出错误位为:01011,即11.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值