`
lq_kevin
  • 浏览: 48516 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

AS3的位运算符

    博客分类:
  • flex
阅读更多

左位移几就相当于乘以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 = 0x336699;
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 = 0x33;
var g:uint = 0x66;
var b:uint = 0x99;
var color:uint = r << 16 | g << 8 | b;
//32bit
var a:uint = 0xff;
var r:uint = 0x33;
var g:uint = 0x66;
var b:uint = 0x99;
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);
分享到:
评论

相关推荐

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

    3. **按位异或(^)**: 异或运算符对两个二进制数进行异或操作,如果对应位不同则结果为1,相同则为0。常用于交换两个数的值或检测数的变化。 示例: ```c int a = 3 (0011), b = 5 (0101); a ^= b; // a becomes...

    flex4视频教程-as运算符

    本视频教程聚焦于AS3中的运算符,这是理解并编写有效AS3代码的关键部分。 在AS3中,运算符是用于执行特定计算或操作的符号。以下是AS3中常见的运算符类型: 1. **算术运算符**:包括加法(+)、减法(-)、乘法(*...

    Flex4视频教程_01-03AS的运算符.rar

    本教程聚焦于AS3的运算符,这部分内容对于理解并熟练运用AS3进行编程至关重要。 在AS3中,运算符用于执行基本的数学和逻辑操作,它们是程序中不可或缺的一部分。以下是AS3中的主要运算符类型: 1. **算术运算符**...

    c语言视频asf教程之运算符和表达式

    5. **位运算符**:C语言还提供了与二进制位相关的运算符,如按位与(&),按位或(|),按位异或(^),左移(),右移(&gt;&gt;),按位非(~),这对于低级别的硬件控制和优化代码至关重要。 6. **逗号运算符**:尽管...

    javascript运算符——位运算符全面介绍

    位运算符是非常底层的运算,由于其很不直观,所以并不常用。但是,其速度极快,且合理使用能达到很好的效果。本文将介绍javascript中常常被忽视的运算符——位运算符 二进制表示  ECMAScript中的所有数值都以IEEE-...

    基于as3的位运算详解

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

    c#运算符和表达式课件,

    3. 比较运算符:用于比较两个值,如==(等于)、!=(不等于)、&lt;(小于)、&gt;(大于)、(小于或等于)、&gt;=(大于或等于)。例如,5 == 5 返回true,5 != 3 返回true,5 &lt; 3 返回false。 4. 逻辑运算符:包括&&(与...

    AS3实用函数、AS3常用算法大全

    3. **`as` 运算符**:尝试将变量转换为指定类型,如果转换失败则返回null。 **示例代码**: ```actionscript var quantity:Number = 15 - "rabbits"; trace(typeof quantity); // 显示:"number",但它是NaN trace...

    delphi运算符列表

    3. **按位或 (or)**:对应位中任一为1则结果为1。 - 示例:`X or Y` 4. **按位异或 (xor)**:对应位不同则结果为1。 - 示例:`X xor Y` 5. **按位左移 (shl)**:将二进制位向左移动指定的位数。 - 示例:`X shl 2...

    PASCAL运算符优先级

    6. `as`:这是一个运行时类型转换运算符,允许在程序执行期间改变变量的数据类型,通常与RTTI(运行时类型信息)有关。 7. `and`:逻辑与按位求和,对布尔值进行逻辑与操作,对整数进行按位与操作。 8. `shl`:按位...

    运算符与类型强制转换PPT学习教案.pptx

    本节课将涵盖 C# 中的运算符和类型强制转换的相关知识点,包括基本的算术运算符、逻辑运算符、位运算符、移位运算符、比较运算符、三目运算符、sizeof 运算符、 typeof 运算符、is 运算符、as 运算符、checked 和 ...

    as3殿堂之路 源码 全集

    《AS3殿堂之路》是AS3编程者的一本重要参考书籍,由孙颖撰写,它深入浅出地讲解了ActionScript 3(AS3)的核心概念和技术,旨在帮助读者掌握AS3编程的基础与精髓。这本书的源码全集包含了大量的示例代码,是学习和...

    as3 chm as3.chm 帮助文档

    AS3(ActionScript 3.0)是Adobe Flash平台的核心编程语言,用于创建交互式内容、游戏和富互联网应用程序(RIA)。AS3相比之前的版本有了显著的改进,包括更强的类型检查、更好的性能以及更现代的面向对象特性。CHM...

    .Net基础视频教程之3-运算符.zip

    `is`运算符用来检查一个对象是否可以被转换为特定类型,`as`则尝试安全地转换类型,如果转换失败,它会返回null。 条件运算符(三元运算符)`: ? :`也值得提及,它的形式是`condition ? value_if_true : value_if_...

    JavaScript按位运算符的应用简析

    大多数语言都提供了按位运算符,按位运算符在c,c++等语言中运用广泛,而在JS,AS等脚本语言中则没有太多的应用例子,有时候,适当的使用按位运算符会取得很好的效果。下面根据自己的认知简单的谈一下js中的位操作...

    as3游戏编程大学中文版附源码

    首先,AS3的基础编程概念包括变量、常量、数据类型、运算符、流程控制(如if语句、for循环、while循环)、函数等。这些是所有编程语言的基础,对于理解和编写任何程序都至关重要。在AS3中,了解基本的事件处理机制也...

    第04章_运算符3

    比如,查询员工的年基本工资可以用`SELECT employee_id, salary, salary * 12 AS annual_sal FROM employees;`这样的语句。 总结起来,运算符在编程和数据库查询中起到至关重要的作用,它们帮助我们执行各种计算并...

    AS3 CookBook 教程实例

    《AS3 CookBook 教程实例》是一份珍贵的学习资源,专门为那些想要深入理解ActionScript 3.0(AS3)编程语言的人准备。ActionScript是Adobe Flash平台的核心语言,广泛应用于网页交互、游戏开发以及富互联网应用(RIA...

    as3中文学习文档

    ### AS3中文学习文档知识点概览 #### 一、Adobe ActionScript 3.0简介 - **定义**:ActionScript 3.0 (AS3) 是一种强大的面向对象的编程语言,主要用于Adobe Flash Player和Adobe AIR环境下的应用程序开发。通过AS3...

    AS3小游戏

    【AS3小游戏】是基于ActionScript 3.0开发的小型互动游戏,它利用Adobe Flash Platform的技术,为用户提供丰富的图形、动画以及交互体验。ActionScript 3.0是Flash Player和Adobe AIR支持的编程语言,相比之前的版本...

Global site tag (gtag.js) - Google Analytics