搞懂海明码

文章介绍了海明码的基本原理,包括如何通过奇偶校验理解错误检测,确定校验位的数量和位置,以及如何应用校验规则计算海明码。通过示例100011详细解释了海明码的构建过程,展示如何通过异或运算得出校验位的值。
摘要由CSDN通过智能技术生成

海明码搞懂之前先了解奇偶校验。例如:1111 对其进行奇偶校验。

   奇检验:11111 奇校验使1的个数保持在奇数

   偶校验:01111 偶校验使1的个数保持在偶数

海明码可以拆分为三步:

一、确定校验的位数

        公式:2^k  >= k + n + 1

        人话:2^k >= k + 数据位数 + 1  其中k就是有多少个校验位

如:100011 的校验位有: 2^k >= k + 6 + 1      ==>       2^4 >= 4 + 6 + 1     有4位校验位(100011有6位,二进制1248 8>6 )

二、确定校验数的位置

还是:100011为例  校验码的位置为:Pi 在海明位号为 2^(i-1) i为校验位4

原有的信息位:D6 D5 D4 D3 D2 D1

校验位:P4 P3 P2 P1

原有位数+校验位数=H10 H9 H8 H7 H6 H5 H4 H3 H2 H1 

        H10 H9 H8 H7 H6  H5  H4 H3 H2 H1        

        D6  D5  P4  D4 D3 D2  P3 D1  P2 P1

海明码为:10?001?1??

三、放入校验规则

H3 = H1+H2P1  P2
H5 = H1+H4P1  P4
H6 = H2 + H4P2  P3
H7 = H1 + H2 + H4P1  P2  P3
H9 = H1 + H8
P1  P4
H10 = H2 + H8P2  P4

H10 H9  H7 H6  H5  H3 

1       0    0    0    1      1

然后把包含有P1的取出来做异或⊕

P1 = H3 ⊕H5 ⊕H7 ⊕H9= 1 ⊕ 1 ⊕0 ⊕ 0= 0

然后把包含有P2的取出来做异或⊕

P2 = H3 ⊕H6 ⊕H7 ⊕H10= 1 ⊕ 0 ⊕0 ⊕1= 0

然后把包含有P3的取出来做异或⊕

P3 = H6 ⊕H7 = 0 ⊕ 0= 0

然后把包含有P4的取出来做异或⊕

P4 = H5 ⊕H9 ⊕H10 = 1 ⊕ 0 ⊕1= 0

将算出的值放入到  D6  D5  P4  D4 D3 D2  P3 D1  P2 P1 得到海明码 1000010100

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值