本帖最后由 周兴中 于 2012-6-24 02:27 编辑
"^"逻辑运算符(异或),逻辑运算符用于连接boolean类型的表达式,两边不一样时,既一边真一边假,结果为真;当两边都一样时,既两边假或两边真时,结果为假
假设b=true a=false ;
b = b ^ a;// 由于^两边不同,结果为b被赋值ture
a = b ^ a;// 由于^两边不同,结果为a被赋值ture
b = b ^ a;// 由于^两边相同,结果为b被赋值false
假设b=false a=true ;
b = b ^ a;// 由于^两边不同,结果为b被赋值ture
a = b ^ a;// 由于^两边相同,结果为a被赋值false
b = b ^ a;// 由于^两边相同,结果为b被赋值true
从上可见,ab的值进行了互换,所以此方法一般在不使用第3方变量的情况下,用户交换两个变量的值
同时"^"也是位运算符.当作为位运算符时,会将^两边的整数类型的变量(byte,short,int,long)转换成二进制进行异或运算,任何相同二进制位进行^运算,结果是0, 不相同二进制位^运算结果是1;
二进制1就是true,0就是false
假设 a=7 ,b=4 ;转换成2进制, a=0111 b=0100
b = b ^ a;// 0111
^0100
0011
既b最后赋值为0011
a = b ^ a;// 0011 相当于 a = (b ^ a) ^ a; 根据结论 a = b;
^0100
0111
既此时a为0111
b = b ^ a; // 0011 由于在上一个语句中 a 已经被赋值为b, 所以此句相当于 b =(b ^ a)^ b ; 根据结论 b = a; 完成了两个变量的互换.
^0111
0100
既b此时为0100
从此也可以看出,一个数异或同一个数两次,结果还是那个数.
该方法一般在不使用第3方变量的情况下,用户交换两个变量的值. |