6:异或运算

6:异或运算

 

异或运算:相同为0,不同为1

同或运算:相同为1,不同为0

So,异或运算记成无进位相加

 

int a = 7;     Binary            00111

int b= 13;                         01101

a^b = ?                            01010 = 10

 

性质:

  1) 0^N = N

       2) N^N= 0

      3)满足交换律和结合律    a^b = b^a;(a^b)^c = a^(b^c)

  int a = 12;

  int b = 1;

  只有a和b指向的是内存中的两块不同的内存区域,才能这样玩。

  a= a^b;

  b=a^b;

  a=a^b;     

       此时,a与b的值做了交换

0  i == j时,不可以
1
public static void swap(int[] arr, int i, int j) { 2 arr[i] = arr[i] ^ arr[j]; 3 arr[j] = arr[i] ^ arr[j]; 4 arr[i] = arr[i] ^ arr[j]; 5 }

 

 

posted @ 2022-05-03 13:05  yzmarcus  阅读(99)  评论(0)    收藏  举报