模二除法的商如何得来

tottili 2007-10-09 04:59:39

模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 ,我怎么也算不出来,请各位大侠解惑!
...全文
4222 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingtianxia710 2010-11-11
  • 打赏
  • 举报
回复
八楼是对的吧
caitijian 2010-01-30
  • 打赏
  • 举报
回复
例:

1111000 ÷ 1101

第1步: (上1)
1111000 ――― 被除数
1101 ――― 除数
0010 ――― 结果
第2步: (上0)
0100
0000
0100
第 3 步: (上1)
1000
1101
0101 ――― 余数
第4步: (上1)
1010
1101
0111 ――― 余数

所以商为1011,余数为0111
FancyMouse 2009-11-13
  • 打赏
  • 举报
回复
看成是(Z/2Z)[x]上的长除法。什么都清楚了
neuqbingo 2009-11-13
  • 打赏
  • 举报
回复
模2除做法与算术除法类似,但每一位除(减)的结果不影响其它位,即不向上一位借位。所以实际上就是异或。然后再移位移位做下一位的模2减。步骤如下:
a、用除数对被除数最高几位做模2减,没有借位。
b、除数右移一位,若余数最高位为1,商为1,并对余数做模2减。若余数最高位为0,商为0,除数继续右移一位。
c、一直做到余数的位数小于除数时,该余数就是最终余数。
1011
/————————
1101 / 1111000
1101 前四位异或
——————————
00100
0000
——————————
1000
1101
——————————
01010
1101
——————————
0111 右移一位111小于除数的位数
商为1011,余数为111.
仅供参考。
pass299 2009-10-18
  • 打赏
  • 举报
回复
good
pass299 2009-10-18
  • 打赏
  • 举报
回复
good
fanxl617 2009-10-12
  • 打赏
  • 举报
回复
再补充说明一下我觉得模2除法其实跟我们普通的竖式除法类似,只是我们在竖式除法中,被除数与除数之间是有借位减,而模2除法是无借位所以只要部被除数的位数能与除数相同即一直可以计算。

1011
/——————
1101 / 1111000
1101
——————
0010
001000
1101
———————
0101
01010
1101
————————
0111
竖式计算表示方法比较明了,商1011,余数111
fanxl617 2009-10-12
  • 打赏
  • 举报
回复
我自己的理解啊!
以上两步是一个循环
将被除数当做初余数过程如下:
步骤1.判断余数最高位是否为1,为1,商为1,并其最高几位与除数异或;到步骤2
为0,商0.到步骤2
步骤2.除数右移一位。余数是与除数最高位对齐的第一步的结果。转到步骤1
退出循环的条件:当余数的位数小于除数时,该余数为终余数。
其实是一个do while语句。

1111000 被除数 即第一次余数 商1
1101 除数
0010000 第一次异或结果

010000 第二次余数 商0
1101 除数右移一位

10000 第三次余数 商1
1101 除速右移一位
01010 第二次异或的结果

1010 第四次余数 商1
1101 除数右移一位
0111 第三次异或结果

111 第五次余数 余数111
1101 除数右移一位 余数比除数少一位,所以终余数为第四次余数111
答案:商1011余数111

lu289196135 2008-09-30
  • 打赏
  • 举报
回复
模2 除法是在求循环冗余检验中的应用!
1111000/1101的运算过程如下:

1111000
1101 商1

0100
0000 商0

1000
1101 商1

1010
1101 商1

111 余数

故结果商为1011 余数为111

模2除法上商的原则是当部分余数的首位是1时,商1.当部分余数的首位为0时,商0
thinkingpower 2008-09-30
  • 打赏
  • 举报
回复
//这里应该漏了一步
010000 ――― 余数 //因为此时余数是010000,其最高位为0,所以这一步的商为0
1101 ――― 除数
10000 ――― 结果

你这个0是怎么得到的,有问题吧。
还有1、2楼的那个人,发的乱七八糟的,越弄越糊涂。发了2个完全不同的
tottili 2007-10-11
  • 打赏
  • 举报
回复
急啊,各位大侠,请指点,是什么时候学的?
tailzhou 2007-10-10
  • 打赏
  • 举报
回复
感觉是这么理解的:

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
tailzhou 2007-10-10
  • 打赏
  • 举报
回复
你就把它当成是一个题目,你按照题目给定规则做就成了。

你只需要知道“模2除法”的定义是什么;
并不需要理会它为什么这么定义;
tottili 2007-10-10
  • 打赏
  • 举报
回复
怎么回事,楼上的有说对的,有说不对?
模2除法结果能等同于两个十进制数除的结果?
这个模2除法是什么时候交的啊,我都记不到了
arong1234 2007-10-09
  • 打赏
  • 举报
回复
不借位
第一步,你能够减,说明商的最高位是1,得到010000
第二步,需要计算的是010000而不是10000,商0,虚借一位高位,10100-1101= 0111
第三步,计算1110,够减,商1, 计算1110-1101得到 1
第四步,计算0010-1101不够,商0,计算10010-1101= 101

所以商为1010,余数为101

感觉这种减法很奇怪哦
arong1234 2007-10-09
  • 打赏
  • 举报
回复
第一步,你能够减,说明商的最高位是1
第二步,需要计算的是010000而不是10000,此时前4位不够减,次高位为0
第三步,计算10000,前四位不够减,再次高位为0
第四步,最后四位借前面一位的1再减得到
10000-1101 = 11

所以商为1001,余数为11

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

楼主的所谓答案应该是错误的

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧