2011年6月21日星期二

  模二除法

模二除法

 

模2除(按位除)

模2除做法与算术除法类似,但每一位除(减)的结果不影响其它位,即不向上一位借位。所以实际上就是异或。然后再移位移位做下一位的模2减。步骤如下:

a、用除数对被除数最高几位做模2减,没有借位。

b、除数右移一位,若余数最高位为1,商为1,并对余数做模2减。若余数最高位为0,商为0,除数继续右移一位。

c、一直做到余数的位数小于除数时,该余数就是最终余数。

 

模二除法

2010-10-14 22:55

模2除法与算术除法类似,但每一位除的结果不影响其它位,即不向上一位借位,所以实际上就是异或。在循环冗余校验码(CRC)的计算中有应用到模2除法。

例:1111000除以1101:

【例2】被校验的数据M(x)=1000,其选择生成多项式为G(x)=x3+x+1,该数据的循环冗余校验码应为多少?

G(x)=x3+x+1对应的二进制数为1011,且G(x)中含3个项式,所以1000B*2^3=1000 000B;

1000 000B(被除数)对1011(除数)做模2除法,得到的余数便是101B,所以所求的该数据的循环冗余校验码应为1000 000B+101B=1000101B。

http://baike.baidu.com/view/3385584.htm

在接收方,用同样的生成多项式G(x)除所收到的序列。若余数为0,则表示传输无差错,否则说明传输过程出现差错。因为所得余数为0,所以收到的序列无差错。CRC 校验方法是由多个数学公式、定理和推论得出的,尤其是CRC 中的生成多项式对于CRC 的检错能力会产生很大的影响。生成多项式G(x)的结构及检错效果是在经过严格的数学分析和实验后才确定的,有其国际标准。常见的标准生成多项式如下。CRC-12:G(x)=x12+x11+x3+x2+1CRC-16:G(x)=x16+x15+x2+1CRC-32:G(x)=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1可以看出,只要选择足够的冗余位,就可以使得漏检率减少到任意小的程度。由于CRC 码的检错能力强,且容易实现,因此是目前应用最广泛的检错码编码方法之一。CRC码的生成和校验过程可以用软件或硬件方法来实现,如可以用移位寄存器和半加法器方便地实现。

http://zhidao.baidu.com/question/128945775.html?fr=qrl&cid=197&index=2&fr2=query

 

或许是一个简单的问题,但是我早就忘记咋解了。
关于一个二进制数1111000 除以1101,模2除法的商为1011,余数为111.这个结果不同于十进制除法。所以特记下。具体步骤如下:

view plaincopy to clipboardprint?
01.#第一步 
02.1111000 
03.1101 
04.0010000 ----余数,商为1,只要第一位非0商就是1 
05.#第二步,每步移一位,当起始位为0时,除以0;为1时除以除数。 
06.010000 
07.0000 
08.010000  ----余数,商为0,只要第一位是0商就是0 
09.#第三步 
10.10000 
11.1101 
12.01010  -----余数,商为1,这里的余数你猜出,其实就是对应位异或 
13.#第四步 
14.1010 
15.1101 
16.0111   ------余数,商为1,如果位数比除数还小,不再继续运算 
17.#最终余数为111,商为1011 

模2除法,参考了下网络资源。最后得到的结论。不知道是正确与否。
模2除法可以用在CRC冗余校验上。K,H均为2进制数,K向左移R,然后K除以H。模2除得到的余数在放到R位中。例如:K=1111,H=1101,R=3,移位之后得1111000,最后CRC=1111111。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cctt_1/archive/2009/11/13/4807117.aspx

没有评论:

发表评论