异或怎么用或

做Java这么久,还真的从来没有用到过某些基础的Java知识。今天就遇到了一个:Java的异或运算^,这个小不点“^”就是Java的异或运算符,是不是有点小,再来个大点的看得清楚:

真^假=真  假^真=真  假^假=假  真^真=假

这四个是在网上copy的例子,但它却是说明了Java异或运算的基本法则,那就是:只要两个条件同时为真或假,其结果都为假(原由网这里要注意区别Java的与运算---其为真真为真,假假为假);但仅当两条件中一个为真,另一个为假时,结果为真(感觉有点叛逆哦?不合常理,RmQtOMDo不走寻常路)。但Java的异或运算还有一个前提那就是它都是以二进制数据为基础进行的运算。也就是说当我们在使用代码中使用到异或运算时,RmQtOMDo它都会先将两个条件进行转换,转换成二进制数据后,再进行运算,例如:

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里面对于异或运算的内部运算机制。

下面看一个例子:

public class TestXOR{

public st原由网atic void main(String[] args)

{

int i = 15, j = 2;

System.out.println("i ^ j = " + (i ^ j));

}

}

运行结果是:i ^ j = 13.

分析上面程序,i=15转成二进制是1111,j=2转成二进制是0010,根据异或的运算规则得到的是1101,转成十进制就是13.

利用这个规则我们可以灵活运用到某些算法。比如,假定有2K+1个数,其中有2k个相同,需要找出不相同的那个数,比如:2、3、4、4、3、5、6、6、5。我们利用异或运算符就可以这样写:

public class TestXOR{

public static void main(String[] args)

{

int[] array = {2,3,4,4,3,5,6,6,5};

int v = 0;

for (int i = 0;i < array.length;i++) {

v ^= array[i];

}

System.out.println("只出现一次的数是:" + v);

}

}

结果是:只出现一次的数是2.

我们就是巧用//www.58yuanyou.com异或运算符的规则,得出一个数和0异或还是自己,一个数和自己异或是0的原理。

内容版权声明:除非注明原创否则皆为转载,再次转载请注明出处。

文章标题: 异或怎么用或

文章地址: www.58yuanyou.com/jiqiao/162755.html

相关推荐