【面向面试学习】异或运算究竟有什么用

52 阅读1分钟

运算定义

PQ
10
01
00
11
P^Q
1
1
0
0

在二进制下,参与异或运算的值相同则为0,不同则为一,其实本文所有内容十进制、8进制、16进制等整数进制都适用

实践运用

交换

不需要借助新增变量,原地实现交换两个变量的值,仅限于变量是整数的情况下

void swap(int &a,int &b){
    a=a^b;
    b=b^a;
    a=a^b;
}

清零

可以实现将a置为0

int a =10;
a=a^a;

反转

当需要进行位操作时,异或操作可以将二进制数指定位置上的值进行反转

将10100001的第2位和第3位翻转,则与00000110进行按位异或运算。 10100001^00000110 = 10100111

相等

判断两个变量的值是否相等,对他们进行异或运算如果为0,那就是相等,比如判断两个ip地址是否相等,IP地址在Http报文里都是大段大段的二进制,转成十进制判断很罗嗦,直接来个异或,直接出结果

结尾

举一反三,大家反思一下,自己的实际工作中,是否可以运用一下异或操作,优化简化自己的代码逻辑