开发工具:
文件大小: 5kb
下载次数: 0
上传时间: 2007-12-17
详细说明: 实数与文本转化的子程序
函数声明如下:
void real2txt(char* text, float f, int width);
void real2txt(char* text, double f, int width);
void txt2real(char * text, float * f, int width);
void txt2real(char * text, double * f, int width);
编译及运行要求:支持 Intel 指令集,支持 C 与汇编混合编译。(如 Windows + VC)
缘起:我在 C 标准库里似乎没有找到文本转化为实数的程序。因为要用,只好自己编了一个。为了方便起见,我在程序中没有牵涉到科学记数法的处理。
效率:本着一切效率优先的原则,我用标准 C 与汇编语言 (Intel 8087 指令系统) 混合编程的方法。所有函数均进行过效率测试,结果如下:
实数 ->文本:12 ~ 24 字节文本的转化耗费 1 ~ 2 kClk
文本->实数:12 ~ 32 字节文本的转化耗费 0.8 ~ 3 kClk
测试平台是 Intel 迅驰 3,单位 kClk 是一千个 CPU 指令周期。相比之下,C 标准库函数 pow(a, b) 的 CPU 耗费是 0.5 kClk,而 sprintf(***,"%f",***) 的系统耗费则是 14 kClk。
问题:把文本转化成实数的问题似乎不是很大,但把实数转化成文本问题就大了:8087 中没有反对数指令!也就是说,pow(a, b) 必须自己算!我曾经使用过一种算法,即用多次开平方的方式来实现指数运算,但效率只有 pow(a, b) 的六分之一。最后实在无奈,我只要还是使用 pow(a, b) 来算指数。我甚至反汇编 pow(a, b),但没看懂算法,而且也没见代码中使用 fscale 这样的指令。
对数指令 fyl2x 的系统耗费一般在 0.180 kClk,相比之下反对数实在太慢了。怎么快速地算反对数这个问题我实在想不通,望大侠赐教! ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.