异或交换两数

Posted pszp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异或交换两数相关的知识,希望对你有一定的参考价值。

从左神算法视频里get到一个小技巧:

通过异或运算来交换两数

看上去瞬间逼格高了不少

 

int a=11;
int b=12;
int temp=a^b;
a=temp^a;
b=temp^b

其实原理很简单,

先科普(小白请看)一下异或运算

两个二进制数异或运算 同位上相同时为0 不同时为1;

(同或运算则相反,相同为1,不同为0)

所以上面 a=temp^a=a^a^b=0^b;

0异或任何数=异或的那个数本身;

所以我们就完成了两个数的交换;

 

以上是关于异或交换两数的主要内容,如果未能解决你的问题,请参考以下文章

异或^运算——完成两数交换

异或^运算——完成两数交换

异或运算实现两数交换

左神讲算法——异或的高级操作(两数交换+经典面试题)

左神讲算法——异或的高级操作(两数交换+经典面试题)

两数交换的3种方法