异或运算.

异或运算._第1张图片
相同为0,不同为1。

1 ^ 1=0
0 ^ 0=0
1 ^ 0=1
0 ^ 1=1

性质:

  1. 0 ^ N = N     N ^ N = 0
  2. 交换、结合
    a ^ b = b ^ a;
    (a ^ b) ^ c = a ^ (b ^ c);
    因此异或全部的元素的结果就是那个只出现1次的元素。

实现两个值的交换,而不必使用临时变量(值可以相等,但前提是他两指向的内存是两块东西)。

例如交换两个整数a = 甲;b = 乙;的值,可通过下列语句实现:

 a =;
 b =;
 a = a^b;   || a =^ 乙
 b = a^b;   || b = (^) ^= 甲
 a = a^b;   || a = (^) ^=

例题:
有一个数组
1、其中有一种数,出现了奇数次,其他的出现了偶数次;
解法:直接异或所有数。
2、其中有两种数,出现了奇数次,其他的出现了偶数次。

异或运算._第2张图片

异或运算._第3张图片

插入排序
异或运算._第4张图片

对数器

异或运算._第5张图片

你可能感兴趣的:(数据结构与算法,java,数据结构)