面试中重要的运算符总结

194 阅读1分钟

异或

定义

  • 异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。 简单理解就是不进位加法,如1+1=0,0+1=1,0+0=0,1+0=1。
  • 异或运算满足交换律,比如a^b^a = a^a^b = b。
  • 满足结合律:(a^b)^c == a^(b^c)
  • 对于任何数x,都有x^x=0,x^0=x

常见例子

一个整型的数组,除了一个数只出现一次,其余都是出现两次,得出这个数:

class Solution {
public:
    int singleNumber(int A[], int n) {
        //set<int> tmp;
        //for (int i = 0; i < n; i++) {
        //    if (tmp.find(A[i]) != tmp.end()) {
        //        tmp.erase(A[i]);
        //    } else {
        //        tmp.insert(A[i]);
        //    }
        //}
        //return *tmp.begin();
        
        // 异或方式解决
        int tmp = A[0];
        for (int i = 1; i < n; i++) {
            tmp = tmp^A[i];
        }
        return tmp;
    }
};

持续更新中。。。