zoukankan      html  css  js  c++  java
  • 杭电oj 2095 & 异或^符号在C/C++中的使用

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

    值得注意的是,异或运算是建立在二进制基础上的,所有运算过程都是按位异或(即相同为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
    ",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");

  • 相关阅读:
    mysql分区
    pl/sql查看tnsnames.ora文件路径
    mysql之事务控制和锁定语句
    mysql返回查询行数fund_rows()
    mysql之视图
    Mysql之btree索引和hash索引的区别
    Java中反射 API 的使用
    zookeeper 客户端 Apache curator 分布式锁实操
    springBoot 整合 ZooKeeper Java客户端之 Apache Curator 实战
    初识 ZooKeeper
  • 原文地址:https://www.cnblogs.com/wujiyang/p/4532132.html
Copyright © 2011-2022 走看看