对ActionScript3中的运算符的研究(一)

 

用AS这么久了,还没有对As中的操作符进行系统的研究。

于是对照官方文档:http://help.adobe.com/zh_CN/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7fd1.html

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/operators.html#array_access

对每一个操作符进行仔细的研究以备参考。

研究中也会把as3语言和其他语言(javascript 和C)对比,加深理解。

一:Arithemetic

略(基本的 + , ++ , -, --, * , / , %)

二:Arithemetic compound assignmet

略 (不能再熟的 += , -= , *= , /= , %= )

三:assignment

略 (=)

四:Bitwise

对于位运算,都是对数字的补码进行逐位操作的。

1. & (Bitwise And)

基本的规则为: 0&0 =0 0&1=0 1&0=0 1&1=1

比如n为任意整数则有

n & -1 = n;

2. | (BItwise Or)

基本的规则为:0 | 0=0 , 0 | 1=1 , 1 | 0 = 1, 1 | 1 = 1

比如AS3代码:

var n1:int = int.MAX_VALUE ;
var n2:int = -1;
var n3:int = n1 | n2;
trace( n3 ); // -1

3.~ (Btwise Not)

基本的规则为: ~0=1 , ~1=0

对整数取反可以形象地表示成在数轴上取对称数字。

例如下面的C语言

int n1 = INT_MAX;
int n2 = ~n1;
printf("%d", n2);

4.^(Bitwise XOR)

基本的规则为:0^0=1, 1^0=1, 0^1=1, 1^1=0

5. << (Bitwise Left Shift)  >>(Bitwise Right Shift)

 n<<m 得到整数n的补码后,将所有位向左移动m位,右边补0,左边抛掉。

n>>m 得到整数n的补码后, 将所有位向右移动m位,右边抛掉,左边补符号位。

比如:

     // 0111 1111        1111 1111       1111 1111         1111 1111
     int n1 = INT_MAX;
     // 1111 1111        1111 1111        1111 1111        1111 1110
     int n2 = n1<<1;  
     // 0001 1111        1111 1111       1111 1111         1111 1111
     int n3 = n1>>2;
     // 1111 1111        1111 1111       1111 1111         1111 1111
     int n5 = -1;
      // 1111 1111        1111 1111       1111 1111         1111 1111
     int n6 = n5>>2;
      
     // -2
     printf("left shift %d", n2); 
     // 536870911
     printf("\npositive right shift %d", n3);
     //-1
     printf("\nnegative right shift %d ", n6 );

6.>>>(Bitwise unsigned right shift)

同>>几乎相同,不同的是左边补足的不是符号位,而始终是0。

例如AS3代码:

// 0111 1111        1111 1111       1111 1111         1111 1111
var n1:int = int.MAX_VALUE;
// 0001 1111        1111 1111       1111 1111         1111 1111
var n3:int = n1>>>2;
// 1111 1111        1111 1111       1111 1111         1111 1111
var n5:int = -1;
// 0011 1111        1111 1111       1111 1111         1111 1111
var n6:int = n5>>>2
// 536870911
trace("\npositive right shift"+ n3);
//1073741823
trace("\nnegative right shift "+ n6 );

值得注意的是>>>在C语言里并没有,但是与AS3同内核的javascript是存在的。例如下面的JS代码:

            // 0111 1111        1111 1111       1111 1111         1111 1111
            var n1= 2147483647;
            // 0001 1111        1111 1111       1111 1111         1111 1111
            var n3= n1>>>2;
            // 1111 1111        1111 1111       1111 1111         1111 1111
            var n5= -1;
            // 0011 1111        1111 1111       1111 1111         1111 1111
            var n6= n5>>>2
            // 536870911
            //1073741823
            alert("\npositive right shift "+ n3
                +"\nnegative right shift "+n6
            );

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值