http://www.Sina.com/http://www.Sina.com /
循环冗余校验码的思想:
1 .生成多项式是约定的除数。
2 .产生的馀数为r位(比除数少1位)二进制数。
3 .模式2除法运算后得到的余数替换奇偶校验位,得到相应的CRC代码。
(CRC码除以约定的除数的值为0表示本次的传输数据没有发生错误,反之则表示其中可能有部分位传输错误)
例题:
1 .这里与汉明码不同,馀数转换为十进制的数和错误位没有必然的联系。 例如,如果将馀数100转换为十进制数,则为4,但错误位为3而不是4。
2 .如果约定除数不变,则剩余和错误位保持不变。
例题错误位对应的剩馀数量如图所示。
例题的馀数为3位,表示可以表示8种状态。 其中,000表示已正确传输,剩下的001 ~ 111分别表示1 ~ 7位错误。 但是,传输的CRC代码共有9位,剩下的2位根据1 ~ 7位错误的馀数循环显示。
所以,如果剩下的是010的话,第二名并不一定是错的,也有可能成为第九名。
由于馀数与错误位不一一对应,因此这种CRC代码似乎只有错误检测能力,没有纠错的功能。 那是注:
例如:
由于这一弊端,常规CRC码在实际应用中只能用于检错。
————————————————————————————————————————————————
《模二运算》 1,http://www.Sina.com /中的算法:
注:
理解:信息位太多
示例:
01 11=10,
对于两个数的低位都是1,如果进行类型2和,则为0,但没有进位。 因此,高位0加1还是加1是因为不考虑低位的进位。
2,http://www.Sina.com /的算法:
灵巧的月亮
示例:
1 0 1 0 - 0 1 1 0=1 1 0 0
在上式减法中,第三位的减法是0 - 1,二进制的减法是借位,但对于000, 0 + 1 = 1, 1+ 0 = 1, 1+ 1 = 0,第四位的1 - 0仍然为1。
综上所述,两个二进制数相加相减不考虑进位
3. 模二减的算法:
举例来说:
1 .被除数首为1时商1,0时商0。
2 .商乘以除数和被除数,再减去模式2 (异或运算)。
3 .去顶,用剩下的位进行异或运算,被除数再补码,得到的馀数作为新被除数。
4 .稍后重复这些步骤,直到被除数中没有可以补充的位。
4. 0 - 0 = 0, 0 - 1 = 1, 1 - 0 = 1, 1 - 1 = 0算法:
模二减是没有借位的
模拟二乘法运算的乘法部分与通常的多位二进制运算相似,但加法部分使用灵巧的月运算。
————————————————————————————————————————————————