最近在准备软考,遇到了与校验相关的知识点,在这里简单做下总结
-----再牛逼的梦想,也抵不住傻逼般的坚持!
1.奇偶校验
奇偶校验的原理是利用一个特定的校验位,使得数据的二进制位数中包含奇数个1或偶数个1来判断数据传输是否正常。
a. 如:使用奇校验,传输数据为 1111 0000,则发送方通过增加一位校验位,来使发送的2进制数据中1为奇数个;因此发送的数据位1 1110 0001;
b. 使用偶校验则反之,需通过新增的校验位使发送的2进制数据中1为偶数个。
ps:局限性: 奇偶校验能检测传输数据中奇数位错误,不能检测偶数位错误。奇偶校验只能检测出误,无法确定错误发生具体是哪一位(奇偶校验能够检测奇数位错误的原因是,校验位的设置是依赖于数据位中1的个数的,如果偶数个1发生错误,比如一次有两个1变成了0,这个时候1的奇偶个数并不发生变化,因此检测不出来)
2.crc循环冗余校验
如要发送的数据为1 1100 0110,生成多项式为G(x) =x5+x3+x+1,则CRC的校验码和最终CRC编码分别是多少?
注:
CRC编码 = 原数据 + CRC校验码
CRC校验码 = 原数据左移N位 ÷ 生成多项式的系数 得到的余数,这里N为G(X)的最大次幂,即5
另这里的除法是模2除法,即每一位异或操作;
二进制的除法:0÷0 = 0,0÷1 = 0,1÷0 = 0 (无意义),1÷1 = 1
即 1 1100 0110 ÷ 10 1011 余数为11001;因此CRC校验码为11001,CRC编码为111000110 11001