校验码(海明码)
海明码一般指汉明码,与其他的错误校验码类似,汉明码也利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。
确定校验码的位数x
设数据有n位,校验码有x位。则校验码一共有2x种取值方式。其中需要一种取值方式表示数据正确,剩下2x-1种取值方式表示有一位数据出错。因为编码后的二进制串有n+x位,因此x应该满足
2x-1 ≥ n+x
使不等式成立的x的最小值就是校验码的位数。在本例中,n=7,解得x=4。就是说,当n=校验位的值的时候,X等于多少?
题目一般会说给出一定位数的数据。首先根据下面这个表格,二进制次方表。看看这个位数对应多少次方,只能大不能小
比如说32位的校验码。根据上面的公式,2x ≥ 32+1+X ,将位数代入到N里。将1移到右边。
简化公式就是:2x ≥ 33+X 根据这个简化公式,其实就可以理解为,2的多少次方可以大于等于33
根据2次方表就可以知道,6个次方!!
最后代入公式,26 ≥ 33+6 即26 ≥ 39 ,即X=6 就是说需要加入6位校验码
遇到此种题目,首先看给出的信息位是多少,比如16,那么2的多少个次方可以比16大?。2的4次方刚好是16,2的5次方比16大。
那么就代入公式看看,答案是5次方