海明校验码(Hamming Code)与buu鸡藕椒盐味
了解海明校验码之前,先补充点基础知识
-
码距
什么是码距呢?码距也叫做海明距离,简单来说就是:在信息编码中,两个合法代码对应位上编码不同的位数称为码距。
例如:10101和00110从第一位开始依次有第一位、第四、第五位不同,则海明距离为3。码距可以由异或操作得出。 -
奇偶校验
奇偶校验(Parity Check)是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。采用此方法得出的那个数字叫奇偶校验位。
例如:
奇校验:就是让原有数据序列中(包括你要加上的一位)1的个数为奇数
1000110(0)你必须添0这样原来有3个1已经是奇数了所以你添上0之后1的个数还是奇数个。
偶校验:就是让原有数据序列中(包括你要加上的一位)1的个数为偶数,偶校验实际上是循环冗余校验的一个特例,通过多项式x+ 1 得到1位CRC。
1000110(1)你就必须加1了这样原来有3个1要想1的个数为偶数就只能添1了。
步入正题–海明校验码
海明码的公式:2^k-1 >= n+k 这个式子的意思是,可以用来校验错误的数字个数2^k-1 要大于或者等于原数据位数n和校验位数k的和。显然在2^k中我们要留出一个数表示数据正确,所以我们用 2^k-1来代表出错的位数。
计算步骤: