码迷,mamicode.com
首页 > 编程语言 > 详细

异或^符号在C/C++中的使用 & 杭电oj 2095

时间:2015-05-27 00:39:55      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

异或^符号,在平时的学习时可能遇到的不多,不过有时使用得当可以发挥意想不到的结果。

值得注意的是,异或运算是建立在二进制基础上的,所有运算过程都是按位异或(即相同为0,不同为1,也称模二加),得到最终结果。

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

举例如下:

int a = 4 =100(二进制)

int b = 3 =011(二进制)

int c = a^b = 111 = 7;

下面就^常用应用做个介绍:

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

  本例启发来自于杭电oj 2095,在一排数字中,如果某一个数字的出现次数是奇数,则可以唯一判断出来。(代码为oj2095 题解)

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int T;
 5     while(scanf("%d",&T)!=EOF && T)
 6     {
 7         int a,result=0;
 8         while(T--)
 9         {
10             scanf("%d",&a);
11             result = result^a;
12         }
13         printf("%d\n",result);
14     }
15     return 0;
16 }

2.实现两个数的交换
  a=a^b;   
  b=a^b;//b=a^b^b=a^0=a;   
  a=a^b;//a=a^a^b=0^b=b;

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a=3;
 5     int b=4;
 6     a=a^b;
 7     b=a^b;
 8     a=a^b;
 9     printf("a:%d  b:%d",a,b);
10     return 0;
11 }

3.判断两个数是否相等
  if(a^b==0)
    printf("a=b");
  else
  printf("a!=b");

 

异或^符号在C/C++中的使用 & 杭电oj 2095

标签:

原文地址:http://www.cnblogs.com/wujiyang/p/4532132.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!