`
Fis
  • 浏览: 87568 次
  • 性别: Icon_minigender_1
  • 来自: 龙城
社区版块
存档分类
最新评论

AS3 位运算

阅读更多
原文转至http://www.tangpei.net/2011/04/as3-bitcalc/

左位移几就相当于乘以2的几次方( Left bit shifting to multiply by any power of two )
//将一个值向左侧移动一位与这个值乘以 2 等效 。浮点数通过舍去小数点后面的所有位来转换为整数。
大约快了300%
x = x * 2;
x = x * 64;
//相当于:
x = x << 1;
x = x << 6;

右位移几就相当于除以2的几次方(Right bit shifting to divide by any power of two)
//将一个值右移一位等效于将它除以 2 并舍去余数。浮点数通过舍去小数点后面的所有位来转换为整数。
大约快了350%
x = x / 2;
x = x / 64;
//相当于:
x = x >> 1;
x = x >> 6;

Number 到 integer(整数)转换

在AS3中使用int(x)快了10% 。尽管如此位操作版本在AS2中工作的更好
x = int(1.232)
//相当于:
x = 1.232 >> 0;

提取颜色组成成分

不完全是个技巧,是正常的方法 (Not really a trick, but the regular way of extracting values using bit masking and shifting.)
//24bit
var color:uint = 0×336699;
var r:uint = color >> 16;
var g:uint = color >> 8 & 0xFF;
var b:uint = color & 0xFF;
//32bit
var color:uint = 0xff336699;
var a:uint = color >>> 24;
var r:uint = color >>> 16 & 0xFF;
var g:uint = color >>> 8 & 0xFF;
var b:uint = color & 0xFF;

合并颜色组成成分

替换值到正确位置并组合他们 (‘Shift up’ the values into the correct position and combine them.)
//24bit
var r:uint = 0×33;
var g:uint = 0×66;
var b:uint = 0×99;
var color:uint = r << 16 | g << 8 | b;
//32bit
var a:uint = 0xff;
var r:uint = 0×33;
var g:uint = 0×66;
var b:uint = 0×99;
var color:uint = a << 24 | r << 16 | g << 8 | b;

使用异或运算交换整数而不需要用临时变量

很可爱的技巧, 在本页顶端的链接里有详细的解释 ,这里快了 20%
var t:int = a;
a = b;
b = t;
//相当于:
a ^= b;
b ^= a;
a ^= b;

自增/自减(Increment/decrement)

这个比以前的慢不少,但却是个模糊你代码的好方法;-)
i = -~i; // i++
i = ~-i; // i–

取反(Sign flipping using NOT or XOR)

另人奇怪的是这个居然快了300%!
i = -i;
//相当于:
i = ~i + 1;
//或者
i = (i ^ -1) + 1;

使用bitwise AND快速取模 (Fast modulo operation using bitwise AND)

如果除数是2的次方,取模操作可以这样做:

模数= 分子 & (除数 – 1);

这里大约快了600%
x = 131 % 4;
//相当于:
x = 131 & (4 – 1);

检查是否为偶数(Check if an integer is even/uneven using bitwise AND)

这里快了 600%
isEven = (i % 2) == 0;
//相当于:
isEven = (i & 1) == 0;

绝对值

忘记 Math.abs()吧 (Forget Math.abs() for time critical code.)

version 1 比 Math.abs() 快了2500% ,version 2 居然比 version 1 又快了20% !
//version 1
i = x < 0 ? -x : x;
//version 2
i = (x ^ (x >> 31)) – (x >> 31);
分享到:
评论

相关推荐

    基于as3的位运算详解

    本文将深入探讨AS3中的位运算,并举例说明其应用。 首先,我们有左位移()运算,它相当于乘以2的幂次方。例如,`x 相当于`x * 2`。这是因为左移一位相当于在二进制表示中添加一个0,从而等效于数值翻倍。这种方法...

    位运算 位运算符和位运算位运算举例位段PPT课件.pptx

    位运算在计算机科学中扮演着重要的角色,它们允许我们在位级别进行操作,具有类似低级语言的功能。位运算符主要有六种:按位与(&),按位或(|),按位异或(^),按位取反(~),左移()和右移(&gt;&gt;). 1. **按位与(&)**: 这...

    as3corelib-.92.11.rar_as 3 corelib_as3_as3corelib_as3corelib API

    2. 数组运算:AS3CoreLib提供了一些增强的数组操作方法,例如`ArrayUtil`类,它包括了排序、查找、去重等实用功能。这些工具可以简化对数组的操作,提高代码的可读性和效率。 3. 网络连接:库中的`Net`类提供了一套...

    vb位运算(调用vc的dll实现)含源代码

    3. **实现位运算**:在C++代码中实现上述函数,使用C++的位运算符完成实际操作。 4. **编译DLL**:编译VC项目生成DLL文件,这是VB调用的入口。 5. **VB调用DLL**:在VB中,需要使用`Declare`语句声明DLL函数,并指定...

    as3帮助文档

    了解如何避免不必要的计算和内存消耗,以及使用位运算等技巧,可以使代码运行更快。 9. **ActionScript编译器和调试工具** - Adobe Flex SDK提供了命令行编译器(mxmlc)和调试工具(fdb),用于编译和测试AS3代码...

    3D立体展示图片-附as3源码

    在AS3中实现3D效果,通常涉及到矩阵运算、透视投影、纹理贴图和光照等概念。开发者需要理解如何使用这些工具和原理来构建和操纵3D物体,并使其在二维屏幕上呈现出立体感。 至于“压缩包子文件的文件名称列表”中仅...

    stc15系列单片机浮点运算性能测试

    3. 减少浮点运算次数:通过合理的数据预处理和计算策略,尽量减少不必要的浮点运算,降低运算负担。 4. 考虑硬件升级:如果对浮点运算性能有较高要求,可能需要考虑升级到具有硬件FPU的微控制器。 总的来说,STC15...

    as3算法大全

    AS3(ActionScript 3.0)是Adobe Flash平台的核心编程语言,用于创建交互式网页内容、游戏以及动画。在页游开发中,算法扮演着至关重要的角色,它们是解决问题和优化性能的关键工具。"AS3算法大全"这个资源包含了AS3...

    as3_橡皮擦

    为了优化,我们可以考虑使用位运算来加速像素操作,或者仅在橡皮擦对象覆盖到的新区域进行处理,而不是每次都遍历整个图像。 7. **最终展示**: "ex_v9.swf"是编译后的SWF文件,它是AS3代码和FLA内容的最终呈现...

    flash AS3 中文帮助文档

    AS3中的核心类,如Date、Math、Array、String,是进行数据处理和逻辑运算的重要工具。文档将深入讲解这些类的使用方法和常见函数。此外,网络编程也是AS3的一大特色,XMLSocket和URLLoader类提供了网络通信的功能,...

    flash as3 官方帮助文档 pdf

    14. **性能优化**:AS3允许开发者利用位运算、优化的循环结构和垃圾回收机制,提高程序运行效率。 通过深入学习这份官方文档,无论是初学者还是有经验的开发者,都能掌握ActionScript 3.0的精髓,从而在Flash平台上...

    as3corelib

    AS3CoreLib是一个开源的ActionScript 3库,由Adobe社区的成员开发并维护,它扩展了Adobe Flex SDK的核心功能。这个库包含了多种实用工具和类,为开发者提供了更强大的功能,以提升AS3项目的效率和灵活性。在AS3编程...

    赛车flash as3

    8. **优化技巧**:为了确保游戏在不同设备上的流畅运行,开发者可能需要进行内存管理和性能优化,比如减少不必要的计算、使用位运算等。 9. **错误处理**:通过try-catch语句来捕获和处理运行时可能出现的错误,...

    as3 flash 尋寶遊戲

    AS3提供了一系列数学和几何方法,如矢量运算、矩形碰撞检测等,用于构建这些游戏机制。 6. **动画制作** 利用AS3的补间动画或逐帧动画技术,可以为游戏角色和环境添加生动的动画效果。了解如何控制动画播放速度、...

    as3平台下的连连看

    由于连连看游戏可能涉及大量的计算和图形更新,开发者需要注意性能优化,如减少不必要的遍历、缓存常用值、使用位运算等技术。 9. 错误处理和调试: AS3提供了强大的错误处理机制,开发者可以通过try-catch语句...

    【个人收集】as3实用小例

    AS3,全称为ActionScript 3,是Adobe Flash平台的核心编程语言,用于创建交互式内容、游戏和动画。以下是从给定的文件标题和描述中提取的一些AS3实用知识点: 1. **LRC类**: LRC是歌词同步文件的格式,常用于音乐...

    flash AS3 自学教程

    【标题】:“Flash AS3 自学教程” 在深入学习Flash ActionScript 3(简称AS3)的过程中,了解和掌握其核心概念与语法是至关重要的。AS3是Flash平台的主要编程语言,用于创建交互式动画、游戏以及丰富的互联网应用...

    flash as3 全站常用特效 伪3d 360度 旋转

    在本资源中,我们主要探讨的是使用Adobe Flash AS3实现的一种常见且引人注目的视觉效果——“伪3D 360度旋转”。这个特效通常用于产品展示,让用户能够全方位地查看对象,如在本例中的“索爱手机”全站应用。以下是...

    flash actionscript3 as3 开发游戏 仿愤怒的小鸟.zip

    ActionScript3(AS3)是Adobe Flash平台上用于创建交互式内容、游戏和动画的主要编程语言。在本项目中,我们将探讨如何利用AS3来开发一款类似"愤怒的小鸟"的游戏。这个压缩包包含了必要的资源和源码,为学习和理解AS...

    Flash AS3 工具性能输出窗口

    7. **代码优化**:常见的优化策略包括使用位运算代替浮点计算、避免不必要的对象创建、使用共享对象池、以及利用DisplayObject的cacheAsBitmap属性提高渲染效率。 8. **性能分析工具**:除了内置的性能输出窗口,...

Global site tag (gtag.js) - Google Analytics