社区
C++ 语言
帖子详情
c++中怎样优化除法
变成熊猫你就老实了是不
2006-12-18 04:47:02
不想用“/”做除法,有没有比它更节省资源的除法函数,我现在只有利用移位方法支持int的除法的,有没有支持double类型的除法函数?
...全文
949
13
打赏
收藏
c++中怎样优化除法
不想用“/”做除法,有没有比它更节省资源的除法函数,我现在只有利用移位方法支持int的除法的,有没有支持double类型的除法函数?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
taodm
2006-12-19
打赏
举报
回复
如果你的对精度要求不高,用整数运算代替。如果对精度有要求,你的优化怎么也赶不上编译器的优化能力。
Jedimaster
2006-12-19
打赏
举报
回复
嵌入ASM代码SSE优化
axx1611
2006-12-18
打赏
举报
回复
开玩笑吧~~ 你再怎么写也没FPU的速度快~~
省省吧
glsensor
2006-12-18
打赏
举报
回复
所有的优化都是有针对性的,没有万能的优化(指变量除法,常量除法你自己先算好再乘不就得了),不然cpu的除法指令早就被摘除了。
runrunrun
2006-12-18
打赏
举报
回复
double也支持移位的除法吧。只要把阶码值改一下就行了
FantasyNES
2006-12-18
打赏
举报
回复
除法太慢了。既然可以轉化成乘法和移位爲啥不用呢?
zenny_chen
2006-12-18
打赏
举报
回复
现在PC的CPU上有除法器,执行起来非常快。
在Analog Device公司的Blackfin DSP处理器上虽然没有除法器,但也只需16个指令周期。
所以只要不要使用过度还不太会影响效率。
这里提供一个仅执行一次除法就能同时得到商和余数的宏,可用于i386及其兼容机,VC++环境下可进行编译。
#include <iostream>
using namespace std;
// dividend, divisor, quotient and remainder should be replaced with variables
//instead of constant number
#define GET_DIV_AND_MOD(dividend, divisor, quotient, remainder)\
__asm{\
__asm push eax\
__asm push edx\
__asm mov eax, dword ptr[dividend]\
__asm cdq\
__asm idiv dword ptr[divisor]\
__asm mov dword ptr[quotient], eax\
__asm mov dword ptr[remainder], edx\
__asm pop edx\
__asm pop eax\
}
void main(void)
{
int a = 9, b = 4;
int quo=0, rem=0;
GET_DIV_AND_MOD(a, b, quo, rem);
cout << "The quo is: " << quo << ", and the rem is: " << rem << endl;
}
roydux
2006-12-18
打赏
举报
回复
牛b人.....
俺记得cpu的除法是建立在加法的基础上的...cpu只支持加法,然后再去衍生减法,乘法,除法.
你不用除法,自己写个cpu指令?
FantasyNES
2006-12-18
打赏
举报
回复
一般來説,浮點數都是可以轉化成整型運算的。
比如乘以0.3,可以這樣做:
x * 0.3 = x * 0.3 * 1024 / 1024 = (x * 307) >> 10
當然這個只是例子,在實際算得時候可以找適當的倍數擴大。
missilery
2006-12-18
打赏
举报
回复
帮你顶一下
浮点数还不知道怎么用二进制表示
OOPhaisky
2006-12-18
打赏
举报
回复
我现在只有利用移位方法支持int的除法的,有没有支持double类型的除法函数?
-------------------------------------------------------------------------------------
我也知道利用移位的方法来支持除法,但是对于浮点类型而言,我不清楚是否有类似的方法,不过个人认为,浮点类型的存储方式更加复杂,所以类似的方法存在的可能性很小,不过这仅仅是个人猜测而已,等待高手给出答案。。。
珍惜生命远离CPP
2006-12-18
打赏
举报
回复
支持double类型的除法函数?
cpu本身的除法指令速度都不快
你还想怎么优化?
DonaldKnuth
2006-12-18
打赏
举报
回复
嵌入汇编
大整数
除法
c++
代码
大整数
除法
c++
代码 大整数
除法
c++
代码 大整数
除法
c++
代码大整数
除法
c++
代码 大整数
除法
c++
代码 大整数
除法
c++
代码大整数
除法
c++
代码大整数
除法
c++
代码
大数模板(
C++
)大数加法、大数乘法、大数
除法
用
C++
写的重载的大数模板 大数加法、大数乘法、大数
除法
、大数减法 带有注释
c++
高精度整数(带符号,但不带
除法
操作)
该资源为
c++
高精度整数(带符号,但不带
除法
操作),已全面
优化
,欢迎下载!!!
c++
高精度整数库(支持高精度除高精度)
这个版本的高精度整数库不仅支持高精度除高精度,同时修复了减法计算
中
的一个严重的bug。并支持高精度类型与其他一切可转换为高精度类型的类型(int,long long,unsignd...同时,全面
优化
了
除法
、取余计算的时间复杂度。
c++
高精度整数库v1.2版
该版本较上一个版本的乘法和
除法
运算速度均提高了2/3(常数
优化
),同时修复了减法运算
中
的一个严重的bug,并
优化
了输入输出(从O(n^2)到O(n))
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章