海明校验

经过几天与校验码的战斗,终于告一段落了,吗呀我也不知道是我苯还是海明太聪明,在5几年的时候就发明出这么深奥的东东,不明摆着给以后的程序员出难题么.不过还是佩服这些IT界的先驱们,数学头脑没说滴!
   总结一小下,其实什么都是会了不难,难了不会,就说这个海明码不会的时候一个字都不明白,会了之后觉得也就不过如此吧~
   海明码是由原始数据和校验码组成的,怎么个组成方法呢~很简单~~应该把整个海明码看成是一个一维数组,校验码分别是第一个,第二个,第三个.........这么区分~但是第一个放在哪~第2个放在哪~~是有说法地~第N个校验码就应该放在2(N-1)的位置上~()里是2的平方哈~可不是乘法哈.~如果2(N-1)=3  好了~就把这个校验码防在这个数组的第3个格就性了~其他不用的格格就放原始数据~从头放~~都添满~就这么简单.
   那数据里需要放多少个校验码呢?还有个简单公式~设有M位的原始数据~K位的校验码那么就一定要满足 2(K)-1>=m+k,这个括号可还是2的平方哈~不会打上标真烦人.比如有9位的2进制原始数据~那么如果K是3的话~那么2(K)-1=7,M+K=12  恩 不对啊~  7<12, 所以K不等于3~那么用K=4试试? 2(k)-1=15,M+K=13 ~     15>13  这回我们可以知道当M=9的时候K就一定是4拉~以此类推~当M=10,=100,=123454等等........的数的时候K的取直就按照这个公式就能计算出来.
     知道了校验码有多少个,应该放到哪里的问题这回该说说取值了,就是每一位校验码是0还是1呢?还有一个计算公式~哈哈~脑袋大了吧~还有更让你脑袋大的,就是在计算取值之前我们需要先知道每一位的校验码都校验哪些位的数据~!有这么个说法~就说被校验的数据的下标一定是校验他的校验码的下标之和~~~比如我们说这个原始数据在数组下标的6位~~那么校验他的校验码就是下标为2和4的这两个,有人问为啥校验2次呢~这就是海明码的高明之处啊~往后看就知道了.
     这里涉及到一个很重要的概念~就是逻辑异或的运算,"�"当校验码与他的校验位用�号连接起来时~等于0~这就是偶校验~如果不等于0那就证明有错误~不相信你自己动笔算算.那么当有K个校验位的时候就会出现K个结果~这些结果可以连成一个2进制的数~通过这些2进制数就可以判断出哪个位置出 问题了~你要问那奇校验怎么办?那你把偶校验的校验位反过来不就是奇校验了么?

你可能感兴趣的:(职场,校验,休闲)