提高程序的运行速度 之 位运算

作者在 2008-05-06 13:43:02 发布以下内容

*/ --------------------------------------------------------------------------------------
*/ 出自: 快乐编程
http://hi.bccn.net/108519
*/ 作者: neverTheSame E-mail:zhaoxufeng9997@126.com QQ:475818502
*/ 时间: 2008-6-1
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------

提高程序的运行速度 位运算

大家都知道在程序设计少不了有算术运算等运算操作(如:加减乘除等),因此,如果运算的量很大时,
就需要更好更高效的方法来解决运算速度的问题。
大家先看一下一些常用的运算执行时间的对比:
___________________________
|          操作           |        执行时间        |
------------------------------------------------
|        整数加          |              1               |
|        整数乘          |              4               |
|        整数除          |              36             |
|        浮点加          |              3               |
|        浮点乘          |              5               |
|        浮点除          |              38             |
|         位移             |              1               |
-------------------------------------------------
从以上数据可以看出乘除运算(特别是除运算所花费的时间更长)所需要的时间是加/位移的4~5倍的时间。
可想而知,如果进行必须进行大量的乘除运算所花费的时间将会很长,在时间限制的程序中,我们就需要
用另外一种方法来解决--“乘除运算转化为位移运算”。
比如:int i=234; i*2---&gt;i<&lt;1 ; i*8--->i<&lt;3;
                 i/2--->i&gt;&gt;1 ; i/8---&gt;i&gt;&gt;3;
                 i*(-1)---&gt;i ^ (0xF000) (int型为16位)
当然,“乘除运算转化为位移运算”需要一定的条件才能进行转化。
这就需要你智慧与勇敢。
希望大家能了解到这种情况,以便在必要的时侯可以往这方面想。

我的C语言编程经验 | 阅读 2786 次
文章评论,共0条
游客请输入验证码