异或运算
有个特性:两个相同的数做异或运算,结果为0
。
n ^ n = 0;
常用的方式是查找数组中只出现一次的数字。
例如:在一个数组中,只有一个数字出现了一次,其余数字都出现了两次。
求这个数字。
利用异或运算
的特性进行计算则非常简单。
public class T_14 {public static void main(String[] args) {int nums[] = new int[]{1, 1, 2, 2, 3, 4, 4, 5, 5};int n = 0;for (int num : nums) {n ^= num;}System.out.println(n);}
}
补充两个常用的操作
x ^ 0 = x;
x ^ 1 = ~x;
~x表示取反,可以参考我之前写的这篇文章:
【Java位运算】Java中整数取反(位操作)