java的异或运算符(^)
异或运算(^)
异或是一个数学运算符,应用于逻辑运算。
异或运算是一种二进制运算:
1^1=0
0^0=0
1^0=1
0^1=1
异或运算法则
- a ^ b = b ^ a
- a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c
- d = a ^ b ^ c 可以推出 a = d ^ b ^ c
- a ^ b ^ a = b
算法应用
有序数组中的单一元素
给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。
请你找出并返回只出现一次的那个数。
解答:
相同的两个数异或=0,异或运算符又具有交换性。
我们可以通过将数组中的所有整数进行异或运算,由于异或的性质,最后得出的值即为只出现一次的那个数
class Solution {
public int singleNonDuplicate(int[] nums) {
int result = nums[0];
for (int i = 1; i < nums.length; i++) {
result = result ^ nums[i];
}
return result;
}
}
小Tips
偶数+1=奇数-1=整数^1