二进制应用 expression1 | expression2 将 expression1 和 expression2 转换为无符号的 32 位整数,然后对于 expression1 或 expression2 的为 1 的对应位的每一位返回 1。浮点数通过舍去小数点后面的所有位来转换为整数。结果是一个新的 32 位整数。 expression1 & expression2 将 expression1 和 expression2 转换为 32 位无符号整数,并对整数参数的每一位执行布尔 AND 运算。浮点数通过舍去小数点后面的所有位来转换为整数。结果是一个新的 32 位整数。 ~ expression1 取反运算,原来是0的变1,原来是1的变0 "<<"(按位向左移位运算符),比如"2 << 2"的结果就是8,就是将2的2进制"10"向左移两位,也就是"1000",转换成10进制就是8 var shifts:Number = 0; var ONE = 1 << shifts++; // 1 var TWO = 1 << shifts++; // 2 var THREE = 1 << shifts++; // 4 var FOUR = 1 << shifts++; // 8 //例子________________________________ var round:Number = 2; var sweet:Number = 4; var delicious:Number = 8; var blet:Number = 16; //苹果是甜的、圆的、好吃的 var apple:Number = round | sweet | delicious; //下面我们来看看苹果是不是好吃的 if(apple & delicious){ trace("apple is delicious"); } //再来看看苹果是不是圆的 if(apple & round){ trace("apple is round"); } //再来看看苹果有没有腐烂 //这里不会输出,因为我们先前定义的苹果并没有腐烂 if(apple & blet){ trace("apple is blet"); } //假设我们的苹果腐烂了,那我们将加上腐烂这个属性,同时去掉美味这个属性 apple |= blet; apple = apple & ~delicious; //我们再来看看上面的输出 //第二个输出将不会显示 if(apple & blet){ trace("apple is blet"); } if(apple & delicious){ trace("apple is delicious"); }