一、异或
2、例如:真异或假的结果是真,假异或真的结果也是真,真异或真的结果是假,假异或假的结果是假。就是说两个值不相同,则异或结果为真。反之,为假。
3、在计算机应用中,普遍运用,异或的逻辑符号 ^ (Shift + 6).形象表示为:
真^假=真
假^真=真
假^假=假
真^真=假
或者为:
True ^ False = True
False ^ True = True
False ^ False = False
True ^ True = False
部分计算机语言用1表示真,用0表示假,所以两个字节按位异或如下
00000000
异或
00000000
=
00000000
============我是分界线============
11111111
异或
00000000
=
11111111
=============我还是分界线=============
00000000
异或
11111111
=
11111111
===========又是我。。。================
11111111
异或
11111111
=
00000000
=============分界线=====================
00001111
异或
11111111
=
11110000
========================================
所以 按位异或 也常用于字节取反操作。
---------------------------------------------------------------
异或还可以用来交换两个整形变量的值,而不需要第三个量的传递.
例如:
a=9;
b=10;
a=a^b;
b=b^a;
a=a^b;
结果是a为10,b为9.
4、说说异或运算^和他的一个常用作用。
异或的运算方法是一个二进制运算:
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;
}
这样就可以不通过监时变量来传递了。
最后要声明:只能用于整数。
来源:oschina
链接:https://my.oschina.net/u/60685/blog/2987