计算机基础:校验码
码距:任意(所有)两个码子的最小距离;
1111与0000码距为4
0000与1100码距为2
奇偶检验码:
奇校验:在数据为本身增加一位0,将数据位中1的个数变为奇数
偶校验:在数据为本身增加一位1,将数据位中1的个数变为偶数
只能发现奇数个位出错的情况
海明码:奇偶校验、分组校验,能够显示哪一个数字错了。
检验位的位置:2的n次方的位置上。
设数据位是n,校验位是K位,则:
这个很重要,考试会出的。
例:校验一个32位长的数据,需要的检验位是几位?
当k=1时:,显然不成立;
当k=2时,,显然不成立
当k=3时,,显然不成立
当k=4时,,显然不成立
当k=5时,,显然不成立
当k=6时,,成立
所以当K=6的时候聚就可以了,所以需要6位检验位。
当k>6的时候都成立,但是只取最小的就可以了!!!
循环冗余校验码:
例如:,信息码为10111,则CRC校验码是多少?
- 将X替换为2,得到
,所以如下:
,在其中相同的数据为1,没有的为0,得到10011;
- 用不进位加法表示进行运算:
除数为:101110000,多项式的最高次幂为几,就添加几个0;
被除数为1中得到的10011:
3.运算
注意在计算的时候采取的是不进位加法(1+1=0,不向上一位进1)。如果最高次幂为n,则在相加后保留n-1位(这一块我感觉是这样,但是有没有依据就不清楚了)
得到余数就是校验码:1100
4.用上一步的到的余数替换除数尾数增加的四个0,得到的新的数据位为:101111100。