计算机基础之最简单的海明校验码(六)

如果求出效验码?

2km+k+1 2 k ≥ m + k + 1

开头就上公式,虽然不友好,可这个公式是必须要你知道的。 m是二进制的长度。

举个栗子

假设有: 0 1 1 0 1 0 1 0 二进制数。我们来数数有多少个哈。

12345678
01101010

有8位,那么m就等于8咯

2k8+k+1 2 k ≥ 8 + k + 1

首先必须算出效验码的个数

k代表的是效验码的个数,取效验码,必须知道这个效验码是多少位吧。
k=3时,公式就这样

238+3+1 2 3 ≥ 8 + 3 + 1

明显 k=3不成立,那么 k=4呢?
248+3+1 2 4 ≥ 8 + 3 + 1

k=4时,成立。那么我就确定 效验码的个数为4

效验码的正确存放姿势:

海明校验码是放在2的幂次位上的,如 1,2,4,8,16….等

求出效验码
  • 原码: 0 1 1 0 1 0 1 0 共8位
  • 效验码:占4位

所以加上效验码的话,一共12位,而校验码放的位置是2的幂次位上,所以4位效验码分别在1、2、4、8的位置上,如下表:

123456789101112
??0?110?1010

然后他们所对应位置的 二进制如下图:

位置二进制显示
10001
20010
30011
40100
50101
60110
70111
81000
91001
101010
111011
121100

如上表所见,1的位置正好是效验码的其中一位,那么他所对应的二进制为:0001,查找该二进制对应1的相同的有: 3,5,7,9,11

那么第1个位置的效验码为:
3对应:0、5对应:1、7对应:0、9对应:1、11对应:0,他们异或出来的值就是第一个?的值。

0⊕1⊕0⊕1⊕1   =1
123456789101112
1?0?110?1010

还有3个效验码就交给你们了。

全部求出后答案应该为:1101,最后的表格为:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值