public class Demo1 { public static void main(String[] args) { boolean t = false | true; System.out.println(t); t |= false; System.out.println(t); t = t&false; System.out.println(t); t &= false; System.out.println(t); t = t^true; System.out.println(t); t^=true; System.out.println(t); }
^ 异或运算符
真^假=真 假^真=真 假^假=假 真^真=假
只要两个条件同时为真或假,其结果都为假
假如现在有这个场景现在公司需要两个程序员,因为考虑到工作积极性,需要一男一女,
老总在最后审核时必须可能是这样的
if(!(x==男^y==男||x==女^y==女)){ 直接PASS }
Scanner in=new Scanner(System.in); int A=in.nextInt(); int B=in.nextInt(); A=A^B; B=B^A; A=A^B; System.out.println(A+" "+B);
很多成对出现数字保存在磁盘文件中,注意成对的数字不一定是相邻的,如2, 3, 4, 3, 4, 2……,由于意外有一个数字消失了,如何尽快的找到是哪个数字消失了
由于有一个数字消失了,那必定有一个数只出现一次而且其它数字都出现了偶数次。用搜索来做就没必要了,利用异或运算的两个特性——1.自己与自己异或结果为0,2.异或满足
交换律。
public static int findLost(int a[]){ int result=0; for(int i=0;i<a.length;i++) { result^=a[i]; } return result; }
原文:http://www.cnblogs.com/ak23173969/p/4984989.html