2027|0

7815

帖子

55

TA的资源

裸片初长成(中级)

楼主
 

尝试实现一个 除法算法 [复制链接]

这是我的一个帖子里我看到的一个回答:
https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=602737&page=1&extra=#pid2292575
可以说,我怀揣着一个馊主意,却抛出了一个还算不错的问题。
然后引来下面这个漂亮的回答。


不过,我感兴趣的是,如何实现这个算法,而且重要的是,这种方法,速度是否均匀?
回答者:wsdymg
找了下资料介绍:

x/y其实就是,x不断减y的过程。小学时候学的长长除法就是这个原理。
用二进制的除法x/y,比十进制容易写,商不是0即是1,而且如果除数大于除数的1倍,商就是标记在另一个位上面了

二进制除法x/y=0.1001/0.1011手工计算如下
           0.11  
     _______
0.1001/0.1001
        10010(后面补0)
        -1011
      ------
        111(余数)
        1110(后面补0)
        -1011
       --------
             1(余数)
           
设ri表示第i次运算后所得的余数,则:
若ri>0,则商1,余数和商左移1位,再减去除数,即ri+1=2ri-y
若ri<0,则商0,余数和商左移1位,再加上除数,即ri+1=2ri+y

用85/6来举例,85/6=1010101/110
a.101(0101)左移1位到第3位都小于110,因此商=000
b.1010(101)左移四位是1010,比110大,商=0001,余数=1010-110=100(101)
c.余数100(101)左移一位是1001,比110大,商=00011,余数=1001-110=11(01)
d.余数11(01)左移一位是110,等于110,商=000111,余数=0(1)
e.余数0(1)左移一位是01,小于110,商=0001110,余数=01

因此85/6=1010101/110=0001110,即14,余数为最后的余数1         

此帖出自编程基础论坛
点赞 关注(1)
个人签名

强者为尊,弱者,死无葬身之地

 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖直播:当AI遇见仿真,会有什么样的电子行业革新之路?
首场直播:Simcenter AI 赋能电子行业研发创新
直播时间:04月15日14:00-14:50

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 8

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表