Flash / Flex / ActionScript/Language/Bitwise Operators

Материал из Web эксперт
Перейти к: навигация, поиск

Bitwise Operators in Actionscript

   <source lang="java">

Operator Name & Bitwise AND | Bitwise OR ^ Bitwise XOR (exclusive or) << Bitwise Left Shift >> Bitwise Right Shift >>> Bitwise Unsigned Right Shift ~ Bitwise Not

       </source>
   
  


Use Bitwise Unsigned Right Shift

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
           var x:Number = -12;
           var y:Number = x >>> 2; 
           trace(y);                // y = 1073741821
           
           //x      1111 1111 1111 1111 1111 1111 1111 1011 
           //y      0011 1111 1111 1111 1111 1111 1111 1101 
   }
 }

}

       </source>
   
  


Using Bitwise AND

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var x:Number = 1234;
       var y:Number = 4567;
       var z:Number = x & y;
       //x      0000 0000 0000 0000 0000 0100 1101 0010 
       //y      0000 0000 0000 0000 0001 0001 1101 0111 
       //z      0000 0000 0000 0000 0000 0000 1101 0010 
       
       trace(z); //210
   }
 }

}

       </source>
   
  


Using Bitwise Left Shift

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var x:Number = 3;
       var y:Number = x << 2;
       
       trace(y); //12
       
       //x      0000 0000 0000 0000 0000 0000 0000 0011 
       //y      0000 0000 0000 0000 0000 0000 0000 1100 
   }
 }

}

       </source>
   
  


Using Bitwise NOT

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var x:Number = ~6;
       
       trace(x);  //-7
       
       x = -(6+1);
       
       trace(x);  //-7
   }
 }

}

       </source>
   
  


Using Bitwise Operations with Color

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var nRed:Number = 123;  
       var nGreen:Number = 123; 
       var nBlue:Number = 123;  
       
       var nRGB:Number = nRed<<16 | nGreen<<8 | nBlue;
       var nRedPart:Number = nRGB >> 16 & 0xFF;
       var nGreenPart:Number = nRGB >> 8 & 0xFF;
       var nBluePart:Number = nRGB & 0xFF;
   }
 }

}

       </source>
   
  


Using Bitwise OR

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var x:Number = 1234;
       var y:Number = 4567;
       var z:Number = x | y;
       
       trace(z);//5591
       
       //x      0000 0000 0000 0000 0000 0100 1101 0010 
       //y      0000 0000 0000 0000 0001 0001 1101 0111 
       //z      0000 0000 0000 0000 0001 0001 1101 0111 
   }
 }

}

       </source>
   
  


Using Bitwise Right Shift

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var x:Number = 12;
       var y:Number = x >> 2;
       
       trace(y); //3
       
       //x      0000 0000 0000 0000 0000 0000 0000 1100 
       //y      0000 0000 0000 0000 0000 0000 0000 0011 
   }
 }

}

       </source>
   
  


Using Bitwise XOR

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var x:Number = 1234;
       var y:Number = 4567;
       var z:Number = x ^ y;
       trace(z); //5381
       
       //x      0000 0000 0000 0000 0000 0100 1101 0010 
       //y      0000 0000 0000 0000 0001 0001 1101 0111 
       //z      0000 0000 0000 0000 0001 0001 0000 0101 
   }
 }

}

       </source>
   
  


Using Flag Variables

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var UP:Number = 1;
       var DRAG:Number = 2;
       var PLAYING:Number = 4;
       var VISIBLE:Number = 8;
       var nFlag:Number |= VISIBLE; 
       trace(nFlag);   
       
       nFlag &= ~PLAYING; // Make it stop playing
       trace(nFlag);   
       nFlag ^= DRAG; // Toggle draggability on and off
       trace(nFlag); 
   }
 }

}

       </source>