3.移位运算的性能优化 本文中的移位实现方法偏重于代码的可读性,没有优化代码的性能,因此不适用于对性能要求苛刻的场合。为了优化性能,可以用查表法来优化执行速度,这是一种拿空间换时间的方案,移位结果可以事先都计算出来,保存在移位表中,用的时候查表,比用*2,/2快多了。比如,字节类型的移位表数组定义如下: dim aSHLB(0 to 255,1 to 7) as byte'字节左移表 使用方法也很简单,比如想要求字节变量x左移一位的结果,只需使用aSHLB(x,1)就可得到,和函数调用很相似。当然,与函数调用不同的是,使用移位表之前一定要初始化移位表的所有元素,否则会得到错误的结果。 Integer类型的移位也可以用查表法,移位表占用 65535 * 15 * 2 * 2 个字节的内存空间。 移位表数组定义如下: aSHLW(0 to &Hffff&,1 to 15) as integer'单字的左移表 注意:Integer是有符号类型,造表的时候要用它的无符号值来造表,同样查表的时候也要用它的无符号值来查表。(因为数组下标是不允许负数的。) 求Integer类型无符号值的方法是:(Int and &hFFFF&),注意,不等同于CLng(Int) 遗憾的是,Long类型无法造表,因为Long类型的值的范围是 4 GB,如果对它造表,那么表的大小就会超出总的内存地址空间。 查表移位的代码请参见本文附带的代码,这里就不给出了。 三 结语 要想实现本文所述的那些位操作函数其实有很多方法,本文所用的方式未必是最好的,主要是为了提供一种解决问题的思路:在编程过程中遇到难以解决的问题时,想一想能不能把大问题分解成能解决或已解决的小问题,这就是“分而治之”的策略。因笔者水平有限,本文难免会有疏漏和不足之处,欢迎批评指正,有意见或建议给我发电子邮件liuqi5521@sina.com。 本程序在 Win2000+VB6.0下调试通过。 |
正在阅读:巧用Win32 API函数增强VB位操作功能巧用Win32 API函数增强VB位操作功能
2005-09-15 10:14
出处:
责任编辑:moningfeng
键盘也能翻页,试试“← →”键