文章目录
谈CRC循环冗余校验的之前,先把二进制除法说一下,先回忆一下十进制之间的除法是如何运算的,
这个式子在做除法的时候满足了这几个条件:
- 从被除数的最左边开始向右做除法
- 被除数运算的两位永远比除数大
- 如果相减的时候需要向前一位借1,则前一位要减1
知道两个概念
模2和
两个二进制位相加不进位,即 0+0=0,0+1=1,1+0=1,1+1=0(此时不进位)
模2减
两个二进制位相减不借位,即0-0=0,0-1=1(此时不进位),1-0=1,1-1=0
两种不同的二进制除法
除法
这个方法和正常的十进制除法没什么区别,就和刚开始回顾的二进制除法运算方法一样,在下面的例子中,被除数前四位1010除以111要考虑向前一位借1,其实把这些二进制转换成十进制的除法就是83/7=11…6,而这个二进制的运算结果完全吻合。
模2除法
模2除法就要用到之前说的两个概念之中的1个,就是模2减,除数和被除数相减的时候不考虑进位(可以看作做异或运算),这就引出了CRC(Cyclic Redundancy Check)循环冗余校验,用来检测或校验数据传输或者保存后可能出现的错误,本次主要讲解在计算机网