您的位置:首页 > 其它

异或详解

2016-04-21 20:18 423 查看
异或门符号'^',在编程中的使用,有的时候能够让你的程序更加精炼简捷,

尤其在C++的acm程序应用中,可以避免许多麻烦!!!它的几个简单作用

讲解如下:

它的简单规则是相同为0,不同为1,例如

int a=3=011(2进制,在计算机中的存储形式);

int b=6=110(2进制,在计算机中的存储形式);

int c=a^b=101=5;

切忌,在异或门的计算中都是应用的2进制!!

任何数和0异或都等于它本身;两个相同的数异或后的结果是0;

1)实现两个数的交换

 a=a^b;   

b=a^b;//b=a^b^b=a^0=a;   

a=a^b;//a=a^a^b=0^b=b;

应用例子如下:

#include<iostream>

using namespace std;

int main()

{

int a=3;

int b=4;

a=a^b;

b=a^b;

a=a^b;

cout<<a<<' '<<b<<endl;

return 0;

}

2.在一排数中找到独一无二的一个数

例子如下:

他的思路是;

只要有相同的数那么他们异或后的结果就是0,最后就剩下0和那个独一无二的数相异或,就等于

那个独一无二的数了!!哈哈!!例子,如下:

#include<iostream>

using namespace std;

int main()

{

int n,i,x,y;

while(scanf("%d",&n)!=EOF&&n)

{

x=0;

while(n--)

{

cin>>y;

x^=y;

}

printf("%d\n",x);

}

return 0;

}

随便输入几个数,找到其中没有和他相同的那个数!

3)判断两个数是否相等

if(a^b==0)

printf("a=b");

else

printf("a!=b");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: