汉明码使用详解

汉明码是一种数据传输中校验和纠错的手段。当传输一个二进制码时,它在每一个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.

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于汉明码校验位的计算方法如下: 1. 确定校验位的位置,即在数据位中插入校验位,使得数据位中每个二进制数位上,校验位所占的位置都是2的幂次方,如第1、2、4、8、16、32、64等位置。 2. 对于每个校验位,将数据位中对应的所有二进制数位相加,得到一个数值。如果该数值是偶数,则校验位为0,否则为1。 对于给定的数据1010111,我们需要将它转化为汉明码。 1. 首先确定校验位的位置,根据数据位的长度,可以得到校验位的个数,即最小的n满足2^n-1 ≥ 数据位长度 + n。 在这个例子中,数据位长度为7,最小的n满足2^n-1 ≥ 7 + n是4。因此,需要插入4个校验位,分别占据第1、2、4和8个位置。 2. 将数据位按照校验位所占的位置进行插入,得到汉明码:010100111101。 3. 对于每个校验位,将数据位中对应的所有二进制数位相加,得到一个数值。如果该数值是偶数,则校验位为0,否则为1。 校验位1的位置是1,对应的数据位是1、4、5、7,它们的和为1+0+1+1=3,是奇数,因此校验位1为1。 校验位2的位置是2,对应的数据位是2、4、6、7,它们的和为0+1+1+1=3,是奇数,因此校验位2为1。 校验位4的位置是4,对应的数据位是3、4、5、6、7,它们的和为1+0+1+1+1=4,是偶数,因此校验位4为0。 校验位8的位置是8,对应的数据位是所有数据位,它们的和为4,是偶数,因此校验位8为0。 因此,1010111的汉明码为010100111101,其中校验位为1010。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值