private&share

   

------------------------------------------

 
异或的解答
作者:pine.lee  发表时间:2006-6-14

 

关于异或的解答:
1.异或是一个数学运算符。他应用于逻辑运算。
2、例如:真异或假的结果是真,假异或真的结果也是真,真异或真的结果是假,假异或假的结果是假。就是说两个值相 异结果为真


说说异或运算^和他的一个常用作用。
异或的运算方法是一个二进制运算:
1^1=0
0^0=0
1^0=1
0^1=1

两者相等为0,不等为1.

这样我们发现交换两个整数的值时可以不用第三个参数。
如a=11,b=9.以下是二进制
a=a^b=1011^1001=0010;
b=b^a=1001^0010=1011;
a=a^b=0010^1011=1001;
这样一来a=9,b=13了。


举一个运用, 按一个按钮交换两个mc的位置可以这样。

mybt.onPress=function()
{
mc1._x=mc1._x^mc2._x;
mc2._x=mc2._x^mc1._x;
mc1._x=mc1._x^mc2._x;
//
mc1._y=mc1._y^mc2._y;
mc2._y=mc2._y^mc1._y;
mc1._y=mc1._y^mc2._y;
}

这样就可以不通过监时变量来传递了。

最后要声明:只能用于整数。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

本人的看法:

首先声明:这些文章不是本人所写,上面著明了来自FLASH8.NET,所以有的东西我也说不太清楚。

这个东西可能在普通的应用中使用的效果并不是太明显的,我们一般使用的变量在通过第三方的交换后能达到同样的效果,而且具有很好的可读性,因此一般还是推荐使用普通的方法。

这个方法采用了异或运算^的方法来完成,效果可能同样,但是一般不容易理解,也有点麻烦。我觉的在不影响程序运行的情况下,还是尽量使用一些自己熟悉的语法为好。

而且它也是有一定的局限性,不但要一定是整数,还要由计算机进行异或运算,异或运算的步骤比基本的加减法要多的多。在经典的VC阶段就知道连乘法都要转换成加法来做减小系统负担。当然,现在的计算机肯定不在话下拉~~(这是题外话)。

举个例子:
a=11
b=9
a=a+b
b=a-b
a=a-b


这个方法我觉的不错,操作也很简单。 但是这只能用在数值的计算上,对mc可能无能为力了^_^,要是java就好一点了,至少能对字符传进行操作了

----------------------------------------
 

 

pine.lee发表于:信息中心  


 

全部分类中有 1 篇日志 | 每页显示 1 篇
留言内容(共有条)


{CommentAuthor}评论说:
{CommentContent}

--- {CommentTime} {CommentUrl}


 

流年--似水


也说--几句


 来来--往往


 

 快速--登陆

*用户名:
*密   码:

 


日志--搜索


踩上--几脚

 
pine 最新的 20 条日志
 

 

 

Designed By UBABY--2005