Chinaunix首页 | 论坛 | 博客
  • 博客访问: 66780
  • 博文数量: 12
  • 博客积分: 320
  • 博客等级: 二等列兵
  • 技术积分: 155
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-18 15:20
文章分类

全部博文(12)

文章存档

2014年(2)

2012年(10)

我的朋友

分类: 嵌入式

2012-06-01 17:18:40

原码除法:

   原码除法与原码乘法一样,符号位是单独处理的。
   商的符号位由参与运算的两个数的符号位进行异或运算求得,商的值由两个数的绝对值进行相除求得。
   实现除法运算时,应该避免除数为0(结果为无穷大)和被除数为0(结果为0,做无用功)的情况,商的位数一般跟操作数的位数相同。
   对于小数定点除法,必须满足:0<|被除数|<=|除数|
   对于整数除法,则要求:0<|除数|<=|被除数|
   根据对余数的处理不同,原码除法可以分为“恢复余数法”和“不恢复余数法(或称加减交替法)”。

(1)恢复余数法
   当余数为负时,需加上除数,将其恢复成原来的余数,余数左移1位,再减除数(余数就是被除数经过若干次减除数运算后的结果)。

(2)加减交替法
   对恢复余数法进行进一步改进,归纳出:
     <1>当余数Ri>0时,上商“1”,再对Ri左移1位后减除数,即做2Ri-|y|运算(-|y|用补码加法代替);
     <2>当余数Ri<0时,上商“0”,然后先Ri+|y|恢复余数,再做2(Ri+|y|)-|y|,即做2Ri+|y|的运算。

   通过这个,就不必进行余数恢复的问题,只做+|y|、-|y|的运算。

   n位小数的除法共上商n+1次,第一次“上商”用来判断是否溢出,为“1”时即溢出。
阅读(2608) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~