Felix

技术源于积累,成功始于执着! 个人邮箱:justlxy@mail.dhu.edu.cn QQ:1576109464

发布一个实用工具小程序(V0.02版)

1
阅读(241) 评论(3)

我们知道,除法是一种很复杂的运算,无论是在软件层面还是在硬件层面,都是各种算法或者系统所极力避免的运算。然而,有的时候除法操作是不可避免的。本文介绍一种简单的方法,可以用于替代一些简单的除以常数或者乘以常数的操作。顺便花了两个小时,用C++写了一个简单的小程序,分享一下。

对于除以常数或者乘以常数,有两种常用的方式可以用于替代除法或者乘法:

第一种是,ROM寻址法。预先将计算结果放在ROM中,将变量作为ROM的地址,则可获得计算结果;

第二种是,移位相加法。可以将除以常数或者乘以常数转换为,将变量移位并相加的运算。而本文介绍的小程序就是用于实现这一功能的。

运行效果如下图所示:

blob.png

blob.png

本程序的设计目标是同时支持除法和乘法转换,且均支持控制最大组合值(或者控制精度,自动选择组合值)两种模式。不过,由于最近时间比较紧张,暂时只实现除法的控制最大组合值模式(即2-1)和控制精度模式(即2-2)。后续有时间会进一步完善,exe文件在本文文末的附件中。如果有需要C++源码的,或者哪位闲的没事的,可以联系我,帮我把另外三个模式写完。哈哈哈哈!


EXE文件:

Mul_and_Div_to_ShiftV0.02.rar


  1. V0.02暂时未考虑定点数的有限字长效应,等有时间会在下一个版本中加进去

  2. 感谢分享~~~~~

  3. 好久没写C++了,语法都快忘光了……