Posted on 2009-12-23 14:40
Prayer 阅读(690)
评论(0) 编辑 收藏 引用 所属分类:
算法
举例
假如有两个值A和B,将A和B异或运算的步骤如下:
1.先将B取反,再和A进行"与"运算,得到B'
2.再将A取反,后和B进行"与"运算,得到A'
3.最后将B' 和 A' 进行"或"运算,就是最终的结果了.
四字:同假异真
真^假=真
假^真=真
假^假=假
真^真=假
异或的运算方法是一个二进制运算:
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;
}
这样就可以不通过监时变量来传递了。
最后要声明:只能用于整数。