当前位置:首页 > 开发 > 编程语言 > Java > 正文

java异或运算备忘

发表于: 2014-06-24   作者:bingyingao   来源:转载   浏览次数:
摘要: java异或运算虽然不常用,但偶尔在系统中会看到,这里备忘一下,其基本原理如下:     真^假=真       假^真=真       假^假=假       真^真=假, 就是说:只要两个条件同时为真或假,其结果都为假(这里要注意区别Java的与运算---其为真
java异或运算虽然不常用,但偶尔在系统中会看到,这里备忘一下,其基本原理如下:

    真^假=真  
    假^真=真  
    假^假=假  
    真^真=假,
就是说:只要两个条件同时为真或假,其结果都为假(这里要注意区别Java的与运算---其为真真为真,假假为假);
但仅当两条件中一个为真,另一个为假时,结果为真。
但Java的异或运算还有一个前提那就是它都是以二进制数据为基础进行的运算。
也就是说当我们在使用代码中使用到异或运算时,它都会先将两个条件进行转换,转换成二进制数据后,再进行运算,例如:
int a = 4^6;这里的4和6 都是int型数据,在进行运算时,4对应的二进制数为:100(0100);6对应的是:110(0110),这样实际的运算方程是:int a = 0100^0110;此时再来看:0<-->0=0;1<-->1=0;0<-->1=1;0<-->0=0;这样运算的结果就是:0010(这是二进制的数据),对应转换成十进制就是2.
    以上就是Java里面对于异或运算的内部运算机制。


下面看下异或解决两个实际的问题:

1

如果要把两个整型变量a、b的值交换,一般要采用一个中间变量做过渡,但也可以在不借助任何其它变量的情况下完成。试填写缺失的代码。
a = a ^ b;
b = _________;

a = _________;

真异或真为假,假异或假为假 || 真异或假为真,假异或真为真,

答案即

a=a ^ b;
b=a ^ b;
a=a ^ b;

2.100个数,范围是1~99 ,其中有一个重复,求重复的数字

有一个数组a[100],其中存储了1-99的整数,且只有一个数字是重复的。

要求告终一个算法给出这个重复的数。

题目的含义是总共同100个数字,1-99定然都有,然后有一个数是重复的。



措施1:有个结论如下:1^2^3……98^99 = 0,因而该题目能够利用这个规律。

对所有的数据举行异或计算,最后的收获即便重复的数字。(当然你可以用其他方法来求解这个题,如求和再减去1到99的和或者其他方法)

note:

一个规律:在异或到N得过程中(1^2^3^……^N),N = 4M,则异或结果为4M,N = 4M - 1,则异或结果为0,N = 4M - 2,则异或结果为4M - 1,N = 4M - 3,则异或结果为1.

java异或运算备忘

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
Java中的异常类,包括内置的异常类以及自定义的异常类,都直接或者间接地继承自java.lang.Throwable
零、一些概念 共享变量:一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的
Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字
前几天写了一篇文章是在C语言中使用异或运算交换两个任意类型变量,其基础为使用^交换两个整数的算
1.逻辑运算符与逻辑表达式 逻辑运算符包括 &&,||,!.其中&&,||为二目运算符,实现逻辑与,逻辑或 !为
//Java中的位运算 /*计算机由复杂电子元器件构成,一个电子元器件有带电和不带电的两种状态,1和0
Java中的运算符 算术运算符 赋值运算符 比较运算符 逻辑运算符 移位运算符 比较运算符的作用是比较两
转载自:http://88889999.iteye.com/blog/1617423 因近段时间项目频繁使用了IO流,之前我没有系统的
package com.wangbiao.design.memento; /** * * @Title: GameRole.java * @Package com.wangbiao.de
一、运算符: 运算符包括下面几种: 算术运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 三目运
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号