平凡也就两个字: 懒和惰;
成功也就两个字: 苦和勤;
优秀也就两个字: 你和我。
跟着我从0学习JAVA、spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美!
关注微信公众号【IT特靠谱】,每天都会分享技术心得~
海明码纠错与检错
海明码(Hamming Code)是一个能够有多个校验位。具有检测并纠正一位错误数据的纠错码。
1 海明码理论计算
假设数据位是n位,海明码的校验位是r位,则n和r必须满足关系:2^r-1>=n+r,为了确保r位校验码能校验所有的数据位,由于r位校验码所能表示的最大十进制数为2r-1,同一时候也确保各位码本身不被其它校验码校验,r取满足条件的最小值即可!
海明码的校验码位置:必须是在2^n次方位置(n从0 开始,分别代表从右边数起各自是第1、2、4、8、16……海明码位)。数据位也就是在非2^n次方的位置。
假设数据位为8位,校验位长度未知(假设为r位),那么 2^r-1>=8+r,可以推测出校验位长度r应该为4(满足2^4 - 1 = 15 >= 8 + 4 =12),即这个海明码长12位(8数据位 + 4校验位)。
令校验位为P3,P2,P1和P0,校验位占据的海明码位置为P0=2⁰=1,P1=2¹=2,P2=2²=4,P3=2³=8;令数据位为D7,D6,D5,D4,D3,D