异或,是一个数学运算符,英文为exclusive OR,缩写为xor,应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:
a⊕b = (¬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),这些法则与加法是相同的,只是不带进位。
使用方法如下
z = x ⊕ yz = x xor y
应用场景
非空整数数组,除了某一个元素只出现了一次以外,其他元素都出现了两次,找出那个元素
一个数字和自己异或 结果为 0,一个数字与0异或 结果还为它自己
比如数组:[6,6,3] ,6和6异或为0,0与3异或为3,因此将数组中所有的元素异或一遍即为最终的结果:public class
public static void main(String[] args) {int[] arr= new int[]{1,2,1,3,4,4,3,5,5,2,8};int i = singleNumber(arr);System.out.println("i : " + i);}public static int singleNumber(int[] A) {int result = 0;for(int i = 0 ; i < A.length ; i ++){result=result^A[i];System.out.println("result: " + result);}return result;}
新建数组相关
public static void main(String[] args) {//创建数组的第一种方法int[] arr=new int[6];int intValue=arr[5];//System.out.println(intValue);//创建数组的第二种方法int[] x={1,2,3,4};//System.out.println(x[1]);//创建数组的第三种方法。int[] y= new int[]{1,2,3,4,5};int m=0;boolean length = isLength(m,y);if(length){System.out.println(y[m]);}else{System.err.println("数组标越界");}}//判断数组下标是否越界public static boolean isLength(int m,int arr[]){boolean flag=false;int length = arr.length;if(m<length)flag=true;return flag;}
