精彩专题推荐:建站之入门课 建站之必修课 建站之关键课 网站价值所在 流量提高专题 css+div 标准 个人网站打造全过程
返回建站学首页
导航:
建站首页 | 网站设计 | 网站开发 | 网站运营 | 网页软件 | 建站指南 | 搜索优化 | 图像处理 | 视频教程 | 书籍教程 | 建站专题
当前位置:首页>网页软件>FLASH教程>正文

二进制在FLASH中的应用


来源:经典论坛 时间:07-05-12 点击: 点击这里收藏本文

一说到二进制,我们总是或多或少的感觉没有底,因为接触的比较少,而且也不是那么直观,容易理解,这次就来谈谈在FLASH中使用二进制,老少皆宜哦。

首先来看一段程序 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");
}

下面我们来分析一下上面的代码
我首先定义了4个属性,应该注意到了这四个属性的值分别是2的N次方,其实换成2进制就是10,100,1000,10000
接着又定义了一个apple变量,用到了"|"符号(按位 OR 运算符),官方的解释是:

expression1 | expression2

将 expression1 和 expression2 转换为无符号的 32 位整数,然后对于 expression1 或 expression2 的为 1 的对应位的每一位返回 1。浮点数通过舍去小数点后面的所有位来转换为整数。结果是一个新的 32 位整数。

如果觉得不太能理解,那就以上面的例子为例。"10 | 100" 的结果是110,"110 | 1000"的结果是1110。所以apple的值其实就是二进制的1110,转换成10进制就是14
然后又出现了一个"&"符号(按位 AND 运算符),官方解释: expression1 & expression2

将 expression1 和 expression2 转换为 32 位无符号整数,并对整数参数的每一位执行布尔 AND 运算。浮点数通过舍去小数点后面的所有位来转换为整数。结果是一个新的 32 位整数。

说白了,就是expression1和expression2的相同位数上必须都是1,那么在结果的对应位置上才是1,所以"apple & delicious"的运算过程就是"1110 & 1000"等于1000,所以判断成立

在加上了blet属性后,我们去掉delicious属性,这是通过"&"和"~"共同完成的,这里又出现了一个"~"(按位 NOT 运算符),就是一个取反运算,原来是0的变1,原来是1的变0,所以"apple & ~delicious"的运算过程是:首先对delicious取反,delicious原来是1000,取反之后自然变成了0111,再与apple执行&运算,"11110 & 0111",结果是10110,相当于去掉了delicious属性

二进制的一个比较典型的用法,就是可以用来保存多个属性,同时可以对这些属性进行基本的运算,这个在上面的代码中已经体现出来了。

补注:
其实,上面这种属性的声明方法并不是很明智,因为一旦属性比较多的话,还得去计算2的N次方到底等于多少,所以,可以采用下面的方法。 var shifts:Number = 0;

var ONE     = 1 << shifts++; // 1
var TWO     = 1 << shifts++; // 2
var THREE     = 1 << shifts++; // 4
var FOUR     = 1 << shifts++; // 8

"<<"(按位向左移位运算符),比如"2 << 2"的结果就是8,就是将2的2进制"10"向左移两位,也就是"1000",转换成10进制就是8。


  把此文章收藏到:          
广而告之
文章搜索
  • Google JZxue.Com

关于我们 | 联系我们 | 友情链接 | 网站地图
Copyright © 2005 - 2006 建站学 All rights reserved.