Chinaunix首页 | 论坛 | 博客
  • 博客访问: 279831
  • 博文数量: 88
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 840
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-20 21:13
文章分类

全部博文(88)

文章存档

2022年(1)

2017年(1)

2016年(2)

2015年(1)

2014年(83)

分类: Java

2014-07-30 20:59:57

在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
            result^=a[i];
        }
        return result;
}

顺序打乱也没有关系。
阅读(401) | 评论(0) | 转发(0) |
0

上一篇:最长公共子串LCS,JAVA版

下一篇:Java中内存

给主人留下些什么吧!~~