• java亦或(^)


    在java程序里面的异或用法: 

    相同输出0,不同输出1,例如: 
    System.out.println(1^1); 输出0 
    System.out.println(1^2);输出3,因为最后2个低位都不一样,所有输出3 

        异域的概念是相同为0不同为1.如果两个数值异或后的值相同,异或前可能不同。 
    比如二进制:0010^0001=0011 而0000^0011=0011。 异或要慎用。 


        一道有意思的题目:很多成对出现数字保存在磁盘文件中,注意成对的数字不一定是相邻的,如2, 3, 4, 3, 4, 2……,由于意外有一个数字消失了,如何尽快的找到是哪个数字消失了? 

       由于有一个数字消失了,那必定有一个数只出现一次而且其它数字都出现了偶数次。用搜索来做就没必要了,利用异或运算的两个特性——1.自己与自己异或结果为0,2.异或满足 
    交换律。 

    public static int findLost(int a[]){ 
            int result=0; 
           for(int i=0;i<a.length;i++) { 
                result^=a[i]; 
            } 
            return result; 


    顺序打乱也没有关系。
     
     
     实现两个数的交换(不添加变量的情况下):
    public static void main(String[] args){
    	int a=3;
    	int b=5;
    	a=a^b;
    	b=b^a;
    	a=b^a;
    	System.out.println(a+""+b);
    }
    }
    

      

  • 相关阅读:
    ActionMQ
    解决Session共享
    Linux中使用keepalived高可用工具解决宕机问题
    Linux安装Nginx
    Nginx基础
    多线程(1)
    单例模式1(3)
    创建型模式5种(2)
    7原则(1)
    反射使用案例(2)
  • 原文地址:https://www.cnblogs.com/gaofangquan/p/7305077.html
Copyright © 2020-2023  润新知