异或详解
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");
尤其在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");
相关文章推荐
- Restricted Boltzmann Machines for Collaborative Filtering(转载)
- VS 常用快捷键
- 移动端类原生开发
- POJ-2152 Fire (树形DP)
- python基础之01数据类型-变量-运算浅解
- 周总结
- 线性表
- Oracle的存储过程返回结果集
- 自定义控件实现圆形头像
- QT运行时加载UI文件产生的Designer警告
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- 车牌识别
- 抽取、转换和装载介绍(九)小结
- office安装错误,报1603
- ES6+React+Webpack初步构建项目流程
- JavaScript 浏览器对象
- C++基础知识
- python调用cmd命令的几种方式和区别
- 程序员常用的网站和博客
- pod command not found问题的解决