对两个变量进行互换,我们知道可以借助第三个变量,也可以使用swap函数来实现,还有第三个方法,就是使用异或的自反性,异或的自反性还可用于对称加密。
A^B ^B的结果还是A,相当于使用密钥B,对A进行加密得到C,再使用B对C进行解密,便得到A。 那如何使用异或进行互换呢。
首先,A=A^ B,A加密后的值赋给A,其实也相当于B使用A加密后的值也赋值给了A。
其次,B=A^B,使用B解密后的值为A,赋值给了B
最后,A=A^B,此时B的值为最初的A,使用B解密后的值为最初的B,赋值给A。 这样便实现了互换。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
a=a^b;
b=a^b;
a=a^b;
cout<<a<<" "<<b;
return 0;
}