位运算的巧妙用法

异或运算(XOR):

  

  异或运算也称为 按位模二加 运算,当然也就有 按位模三加 运算。

  C/C++ 的运算符 : ^

  特点:A xor A = 0

 

  根据异或运算的特点,可以解决一类问题。

  1. 数组里面只有一个数出现奇数次,其他的都出现偶数次,所有数的异或和即为所求数。

 

  2. 数组里面只有一个数出现1次,其他的都出现3次,所有数的按位模三运算的和即为所求数。

 

  3. 数组里恰好有两个数(a , b)只出现一次外,其余每个数恰好出现两次,所有书去异或和得到 a xor b, 取最高位将数据分组再分别求异或和就是所求的两个数。 

posted @ 2015-07-22 13:26  poore  阅读(221)  评论(0编辑  收藏  举报