目前看到的位操作大部分是用在图形的RGB/ARGB的处理,或者用在swf加密的处理。
下面是最简单的位操作,很容易理解
“<<” bitwise left shift 将 expression1 和 shiftCount 转换为 32 位整数,并将 expression1 中的所有位向左移动指定的位数,该数字由 shiftCount 转换所得的整数指定。
“>>” bitwise right shift 将 expression 和 shiftCount 转换为 32 位整数,并将 expression 中的所有位向右移动一定的位数,该数目由 shiftCount 转换得到的整数指定。
“>>>” bitwise unsigned right shift 该运算符与按位右移 (>>) 运算符基本相同,但不保留原始表达式的符号,因为左侧的位始终用 0 填充。
提取颜色组成成分
//24bit 不包含aphla通道 var color:uint = 0x112233; 00 11 22 33 ------------------------------------------ var r:uint = color >> 16; 00 00 00 11 ------------------------------------------ var g:uint = color >> 8 & 0xFF;//偏移8位 00 00 11 22 后做与运算 00 00 00 22 ------------------------------------------ var b:uint = color & 0xFF; 00 00 00 33 ------------------------------------------ //32bit 的ARBG的处理跟上面一样的原理 var color:uint = 0xff112233; var a:uint = color >>> 24; var r:uint = color >>> 16 & 0xFF; var g:uint = color >>> 8 & 0xFF; var b:uint = color & 0xFF;
合并颜色组成成分
主要是做或运算
//24bit var r:uint = 0x11; var g:uint = 0x22; var b:uint = 0x33; var color:uint = r << 16 | g << 8 | b; //32bit var a:uint = 0xff; var r:uint = 0x11; var g:uint = 0x22; var b:uint = 0x33; var color:uint = a << 24 | r << 16 | g << 8 | b;