异或,是一个数学运算符,英文为exclusive OR,缩写为xor,应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:

  1. ab = (¬a b a ∧¬b

异或运算的作用

参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。
如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位。
使用方法如下

  1. z = x y
  2. z = x xor y

应用场景

非空整数数组,除了某一个元素只出现了一次以外,其他元素都出现了两次,找出那个元素

一个数字和自己异或 结果为 0,一个数字与0异或 结果还为它自己
比如数组:[6,6,3] ,6和6异或为0,0与3异或为3,因此将数组中所有的元素异或一遍即为最终的结果:public class

  1. public static void main(String[] args) {
  2. int[] arr= new int[]{1,2,1,3,4,4,3,5,5,2,8};
  3. int i = singleNumber(arr);
  4. System.out.println("i : " + i);
  5. }
  6. public static int singleNumber(int[] A) {
  7. int result = 0;
  8. for(int i = 0 ; i < A.length ; i ++){
  9. result=result^A[i];
  10. System.out.println("result: " + result);
  11. }
  12. return result;
  13. }

补充:

新建数组相关

  1. public static void main(String[] args) {
  2. //创建数组的第一种方法
  3. int[] arr=new int[6];
  4. int intValue=arr[5];
  5. //System.out.println(intValue);
  6. //创建数组的第二种方法
  7. int[] x={1,2,3,4};
  8. //System.out.println(x[1]);
  9. //创建数组的第三种方法。
  10. int[] y= new int[]{1,2,3,4,5};
  11. int m=0;
  12. boolean length = isLength(m,y);
  13. if(length){
  14. System.out.println(y[m]);
  15. }else{
  16. System.err.println("数组标越界");
  17. }
  18. }
  19. //判断数组下标是否越界
  20. public static boolean isLength(int m,int arr[]){
  21. boolean flag=false;
  22. int length = arr.length;
  23. if(m<length)
  24. flag=true;
  25. return flag;
  26. }