408计网-关于检错码和纠错码的几个问题

本文不着重介绍原理,主要着眼于本人在学习检错码和纠错码过程中的疑问以及思考,整理出来帮助自己再理解一遍.

奇偶校验码

奇偶校验码本身只能检错奇数个错误,若有 1 , 3 , 5... 1,3,5... 1,3,5...位出错,奇偶校验码是可以知道的,但是若有两位出错,比如 11 11 11 00 00 00,此时奇偶校验码就判断不了了.奇偶校验码本身只有一位,又能要求它什么呢.

循环冗余校验码( C R C CRC CRC)

本质上就是利用异或的性质: A ⊕ B ⊕ A = B A \oplus B\oplus A=B ABA=B.

海明码

为什么具有检错 e e e位能力的编码,最小码距为 e + 1 e+1 e+1?

这里我们不妨用一个例子说明,假设有一组编码:0000,0011,1100,1001,1010,0101,这组编码的最小码距为 2 2 2,若此时计算机收到了 0001 0001 0001这样的一个编码,我们会发现,它的码距和 0011 0011 0011只有 1 1 1,此时计算机一定能判断出它是一个出错的数据,但是具体哪一位出错,我们不得而知.
从这个例子不难看出,若是一组编码的最小码距为 e + 1 e+1 e+1,任意 1 , 2 , . . e 1,2,..e 1,2,..e位的变化都会使得它一定会与原来编码组里面的一个编码的码距减小,但是若超过 e e e位,就不一定了,比如 0000 0000 0000变成 0011 0011 0011,就会被计算机认为原本的数据就是 0011 0011 0011.

为什么具有纠错 t t t位能力的编码,最小码距为 2 t + 1 2t+1 2t+1?

不妨假设现在我们要纠错两位,若码距为 4 4 4,考虑原始编码中存在 100001 , 111111 100001,111111 100001,111111这两个编码,现在计算机读到了一个 101011 101011 101011,此时我们会发现,上面我们所说的两个编码,都可以通过两位出错变成下面这个编码,此时计算机是判断不了原来的编码究竟是哪个.
再考虑码距为 5 5 5,且有两个原始编码 1000010 , 1111111 1000010,1111111 1000010,1111111,此时计算机读到一个编码 1010011 1010011 1010011,我们会发现,只有 1000010 1000010 1000010可以出错两位变成 1010011 1010011 1010011.所以便可以进行唯一的纠错.

其实直觉上考虑确实应该不小于 2 t + 1 2t+1 2t+1,因为若是最小码距只有 2 t 2t 2t位,则意味着有两个编码之间只有 2 t 2t 2t位是不同的,那么若有一个出错了 t t t位的编码,到这两个编码的海明距离均为 t t t的话,就无法分辨究竟是哪一个出错导致产生了这个编码.

当然这并不严谨,408也不会要求证明,能从直观上明白就可以了.

为什么海明码是纠错一位,检错两位?

首先明确,海明码纠错一位检错两位是建立在74海明码之上的,即编码长度为7,信息位为4,检验位为3.在这种情况下,海明码可以纠错一位,检错两位.实际上还有其它的海明码格式.

那么为什么是纠错一位检错两位呢.这就需要我们前面所说的两个关于码距的结论.由于信息位一共是4位,那么一共只能组合出16种不同的信息,信息位确定了以后,检验位也唯一地确定了.

原始信息海明码
0001000 0111
0010001 1001
0011001 1110
0100010 1010
0101010 1101
0110011 0011
0111011 0100
1000100 1011
1001100 1100
1010101 0010
1011101 0101
1100110 0001
1101110 0110
1110111 1000
1111111 1111

把这些信息都列出来,一一检查会发现,这些海明码两两之间的最小码距为 3 3 3.那么也就意味着,海明码只能检错 3 − 1 = 2 3-1=2 31=2位,只能纠错 ( 3 − 1 ) / 2 = 1 (3-1)/2=1 (31)/2=1位.

为什么海明码的检验位要放在 1 , 2 , 4 , . . 2 k 1,2,4,..2^k 1,2,4,..2k位上?

其实对海明码本身来说,无所谓检验位放在哪里,只要保证所有的位都可以被检验位检验到即可,那为什么要放在这几位上呢,个人理解是为了方便表示.可以证明,利用 1 , 2 , 4 , . . . , 2 k 1,2,4,...,2^k 1,2,4,...,2k这些数字,可以表示任何一个正整数.所以放在 1 , 2 , 4 , . . . 1,2,4,... 1,2,4,...可以把下标很好的与检验位的下标对应,只需要做加法让检验位的下标之和等于待检验的位的下标,这样就可以保证所有位都会被检验位覆盖.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值