zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java利用异或运算的性质,对几个字符_java位运算符详解

JAVA字符 详解 利用 运算 几个 运算符 性质
2023-06-13 09:14:48 时间

大家好,又见面了,我是你们的朋友全栈君。

原标题:干货:Java异或运算符的使用方法

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

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

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

int a = 4^6;这里的4和6 都是int型数据,在进行运算时,4对应的二进制数为:100(0100);6对应的是:110(0110),这样实际的运算方程是:int a = 0100^0110;此时再来看:00=0;11=0;01=1;00=0;这样运算的结果就是:0010(这是二进制的数据),对应转换成十进制就是2.

这就是Java里面对于异或运算的内部运算机制。

下面看一个例子:

public class TestXOR{

public static 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.

我们就是巧用异或运算符的规则,得出一个数和0异或还是自己,一个数和自己异或是0的原理。返回搜狐,查看更多

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/185936.html原文链接:https://javaforall.cn