读书人

模二除法的商怎么得来

发布时间: 2012-02-04 15:43:08 作者: rapoo

模二除法的商如何得来

模2除做法与算术除法类似,但每一位除(减)的结果不影响其它位,即不向上一位借位。所以实际上就是异或。然后再移位移位做下一位的模2减。步骤如下:
a、用除数对被除数最高几位做模2减,没有借位。
b、除数右移一位,若余数最高位为1,商为1,并对余数做模2减。若余数最高位为0,商为0,除数继续右移一位。 《》
c、一直做到余数的位数小于除数时,该余数就是最终余数。

例:

1111000 ÷ 1101

第1步:
1111000 ——— 被除数
1101 ——— 除数
0010000 ——— 结果
第2步:
10000
1101
01010
第 3 步:
1010
1101
0111 ——— 余数


余数没有问题,但商它说等于 1011 ,我怎么也算不出来,请各位大侠解惑!

[解决办法]
第一步,你能够减,说明商的最高位是1
第二步,需要计算的是010000而不是10000,此时前4位不够减,次高位为0
第三步,计算10000,前四位不够减,再次高位为0
第四步,最后四位借前面一位的1再减得到
10000-1101 = 11

所以商为1001,余数为11

换算成十进制验算,1111000=120, 1101=13, 120=13*9+3很显然是正确答案

楼主的所谓答案应该是错误的
[解决办法]
不借位
第一步,你能够减,说明商的最高位是1,得到010000
第二步,需要计算的是010000而不是10000,商0,虚借一位高位,10100-1101= 0111
第三步,计算1110,够减,商1, 计算1110-1101得到 1
第四步,计算0010-1101不够,商0,计算10010-1101= 101

所以商为1010,余数为101

感觉这种减法很奇怪哦
[解决办法]
感觉是这么理解的:

1111000 ÷ 1101

第1步:
1111000 ——— 被除数 //因为此时余数是1111000,其最高位为1,所以这一步的商为1
1101 ——— 除数
0010000 ——— 结果

//这里应该漏了一步
010000 ——— 余数 //因为此时余数是010000,其最高位为0,所以这一步的商为0
1101 ——— 除数
10000 ——— 结果

第2步:
10000 //因为此时余数是10000,其最高位为1,所以这一步的商为1
1101
01010
第 3 步:
1010 //因为此时余数是1010,其最高位为1,所以这一步的商为1
1101
0111 ——— 余数 //此时余数小于除数,结束


因此最终的商为1011;余数为0111
[解决办法]
你就把它当成是一个题目,你按照题目给定规则做就成了。

你只需要知道“模2除法”的定义是什么;
并不需要理会它为什么这么定义;

读书人网 >软件架构设计

热点推荐