按位操作的使用(ActionScript描述)

原创 2007年09月18日 01:37:00
      我还不是一个职业程序员,也没有写过太多的代码,目前还只是一个爱好者吧。目前为止,我从来没有使用过按位运算和操作,不论是在C++或者AS的实际应用中……不对,应该说没有刻意主动使用过,特别是用于实际操作中。今天看到一些启发,记录一下:
   
       首先,为什么要使用按位运算?——能节省在二进制数据和布尔数据之间转换的步骤,所以只要可能,就应该用按位操作来代替布尔操作。这样做得越多,对程序的执行效果提高也越多!

       1、按位操作处理颜色
       RGB值通常由6位十六进制表示,红绿蓝各2位,而2位十六进制正好可以用8位二进制表示(一个字节)。
       因此,将三种颜色值组成一个RGB值采用按位操作就可以这样做:
          Action Script:
                 var nRed:Number     = 12;
                 var nGreen:Number = 10;
                 var nBlue:Number    =  233;
           
                 var nRGB:Number = nRed<<16 | nGreen<<8 | nBlue;
        将一个RGB值分开成三种颜色值的做法:
                 var nRed:Number     =   nRGB >> 16 & 0xFF;
                 var nGreen:Number =   nRGB >> 8 & 0xFF;
                 var nBlue:Number    =   nRGB & 0xFF;


         2、使用标志变量
         标志变量是一种设置跟踪变量的集合,是一种使用一个单独变量来跟踪多个设置值的方法。RGB值就是一个典型的应用,它通过一个RGB值跟踪3个设置值。
         更常用的标志变量像布尔变量那样使用每一位,用一个单独变量替代多个布尔值。

         例:
        
位置编号 3 2 1 0
功能 是否可见 是否播放 是否可拖拽 是否右边向上
1 0 0 1

          设置变量表示功能:
               var RIGHT_SIDE_UP:Number  =  1;    //    2^0
               var DRAGGABLE:Number          =  2;    //    2^1
               var PLAYING:Number                  =  4;    //    2^2
               var VISIBLE:Number                    =  8;    //    2^3

               var nFlag:Number  =  4;                           // 0 100
               按位“或”用于打开:
               nFlag |= VISIBLE;                                      // 1 100
               按位“与”和按位“取反”使某位关闭(清位)
               nFlag &= ~PLAYING;                                // 1 000
               按位“异或”用于切换
               nFlag ^= DRAGGABLE;                            // 1 010

位操作算法的总结(一)

本文参考《程序员面试金典》1.位操作原理与技巧第一组:-x^000..000 = x ; - x^111..111 = ~x; - x^x = 0;第二组: x&000..000 = 0; x&1...
  • qq_16811963
  • qq_16811963
  • 2016年08月16日 22:47
  • 638

一些位操作函数

 转自http://www.hseda.com/mcu/cbitop.htm#define uchar unsigned char/*测试变量某一位是否为‘1’,是返回真,否返回假,num为待测试的数...
  • bingyan123456
  • bingyan123456
  • 2006年03月31日 20:58
  • 600

Java中的按位操作——Java编程思想笔记

Java中的按位操作
  • alading2009
  • alading2009
  • 2014年10月25日 10:19
  • 1577

verilog中几种常用的位操作函数

clogb计算二进制的对数上限,例如:1000的对数上限是3,但是1001的对数上限变成了4,计算过程如下: if argument =1000; argument=1000-1=111; 移位...
  • XJTU_NOC_Wei
  • XJTU_NOC_Wei
  • 2016年12月28日 09:31
  • 1199

深入总结嵌入式位操作运算符

位运算应用法则 清零取位要用与,某位置1要用或,取反和交换用异或 移位运算要诀 1.他们都是双目运算符,两个运算分量都是整形,结果也是整形。  2.“ 3“>>”右移:右...
  • cmh477660693
  • cmh477660693
  • 2016年04月11日 17:49
  • 999

6种常用位操作符的原理及其用途

C语言位操作符的原理及其用途 6种位操作符的形式与含义如下: &:按位“与”(AND); |:按位“或”(OR); ^:按位“异或”(XOR); ~:“取反”(NOT); >>...
  • liang12360640
  • liang12360640
  • 2014年12月27日 11:52
  • 1609

C位操作介绍

C++位操作包括两种:传统的C语言方式的位操作和C++中利用bitset容器的位操作 一、传统的C方式位操作: 1.基本操作:    使用一个unsigned int变量来作为位容器。 2....
  • lizhifa2011
  • lizhifa2011
  • 2014年07月04日 15:14
  • 942

可能是最通俗易懂的 Java 位操作运算讲解

Java 位操作这是一项很基础很基础的知识内容,在所有 Android 和 Java 开发者的学习之路上,大家都接触过,但是实际运用的场景却很少见,很多人估计都忘记有这个知识点了。事实上,在 C/C+...
  • briblue
  • briblue
  • 2017年04月20日 19:35
  • 2388

Java小白进阶之一---“按位操作符”(重点是“~”)

在这里先补充原码、补码、反码的一点知识: 正数的反码、补码都与原码一样负数的反码、补码与原码不同。                           反码:原码中除去符号位,其他数值位取反 ...
  • RMS_1992
  • RMS_1992
  • 2016年10月26日 15:40
  • 470

Java位操作总结

java 位运算 与,或,异或,取反,左移,右移
  • wfzczangpeng
  • wfzczangpeng
  • 2016年07月04日 11:05
  • 2101
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:按位操作的使用(ActionScript描述)
举报原因:
原因补充:

(最多只允许输入30个字)