java利用异或运算的性质,对几个字符_java位运算符详解
原标题:干货: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
相关文章
- java简单的除法运算_Java除法运算的陷阱[通俗易懂]
- 学java用什么编译器_学习Java用什么编译软件好
- java jce_了解Java JCE的加密
- java如何输入字符串_JAVA中怎样输入字符串「建议收藏」
- vscode配置java环境变量_配置Java
- java使用xquery_如何使用Java XQuery
- java JNI: C 语言调用 Java 方法示例详解编程语言
- Java移除字符串中的重复字符详解编程语言
- Java清除字符串中重复出现的字符详解编程语言
- java实现文件下载详解编程语言
- Java学习笔记之三java中的变量和常量详解编程语言
- Java NIO之Charset类字符编码对象详解编程语言
- JAVA基础之字节流与字符流详解编程语言
- Java:判断字符串中包含某字符的个数详解编程语言
- Java IO(五):字符流进阶及BufferedWriter、BufferedReader详解编程语言
- Java问题-java进程占用内存过高,排查原因详解编程语言
- java 字符常量池详解编程语言
- 持久化Java持久化技术与Redis高级应用(redis高级之java)
- 深入浅出Java配置MySQL数据库(java配置mysql)
- Java实现Redis数据写入(java写入redis)
- 让Java桥接Linux新世界的重要性(java链接linux)
- Oracle中实现Java程序设计的极限可能性(oracle中的java)
- 基于Java字符编码的使用详解