*/ --------------------------------------------------------------------------------------
*/ 出自: 快乐编程 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--->i<<1 ; i*8--->i<<3;
i/2--->i>>1 ; i/8--->i>>3;
i*(-1)--->i ^ (0xF000) (int型为16位)
当然,“乘除运算转化为位移运算”需要一定的条件才能进行转化。
这就需要你智慧与勇敢。
希望大家能了解到这种情况,以便在必要的时侯可以往这方面想。