建站部落网 - www.jzbulo.com 首 页业界动态免费空间
建站首页 | 业界动态 | 网页制作 | 网络编程 | 网站运营 | 服务器技术 | 网页特效 | 图形图像 | 计算机技术 | 作品欣赏
您当前的位置:建站部落 > 图形图像 > Flash > 文章内容 注册用户 用户管理 退出登录
二进制在FLASH中的应用
作者:lzyy  来源:蓝色理想  发布时间:2007-5-11 0:33:40  发布人:jzbulo

减小字体 增大字体

一说到二进制,我们总是或多或少的感觉没有底,因为接触的比较少,而且也不是那么直观,容易理解,这次就来谈谈在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。


经典论坛讨论:
http://bbs.blueidea.com/thread-2742543-1-1.html

本文链接:http://www.blueidea.com/tech/multimedia/2007/4698.asp 
[] [返回上一页] [打 印] [收 藏]
相关文章 赞助商链接
· 写给刚刚踏入网页设计这个世界的你
· DesignUK 设想英伦系列活动之大声展21日在沪..
· 婚恋交友网站盈利模式初探
· CNAP2007国际艺术展在北京酒厂国际艺术园医..
· 德国DFI学院学生获奖作品之一:大众篇(1)
· Xbox Forza Street Racing 平面广告设计
· Jessica Vernick 平面设计
· Kelsey Reckord 平面设计
· PRINT-RUN伦敦防治肺癌慈善海报展欣赏
· [摄影] 水中芙蓉
· [同盟报道]清华美院2007本科毕业展开幕
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图
声明:本站中的内容及图片来均源于互联网,其中演示的技术细节仅用于试验 环境的技术研究以及漏洞的验证。
文章内容不涉及任何有版权的内容,仅供技术交流研究之用。网 站联系QQ:175612638
Copyright © 2002-2006 jzbulo.com. All Rights Reserved . 粤ICP备05040326号