在平常的编程中,很少用到算法(反正我是这样,只顾着实现业务需求了),所以,我的代码总的来说是毫无价值的。怎么才能让自己代码变得有点意思呢,今天给大家介绍个运算符"^",异或运算符。有的时候用点运算符的小技巧,可以让自己的代码“蓬荜生辉”喔!:-D
首先,我先介绍一下,什么是异或运算符。简单点来说,异或就是相同为0,不同为1,它是32位二进制数使用的运算符,我们在实际使用中,计算的时候都是要转换成二进制的。下面,我用一个图来介绍什么是异或,大家一看就明白了。
相信大家现在可以明白异或了吧!
下面我用一个简单的实例,通过比较,更清楚深入的了解异或。
题目:请把两个整数进行交换。
在我们初次学习Java的时候,进行两个数之间的交换,首先会想到使用临时变量,于是,方案一就是采用第三方变量实现交换。
1 int a = 10; 2 int b = 20; 3 4 int temp = a; 5 a = b; 6 b = temp;
采用第三方变量实现是最简单也是最容易理解的,但是能不能不使用第三方变量呢?方案二就是通过数学上基本运算,实现了交换。
1 int a = 10; 2 int b = 20; 3 4 a = a + b; //a=30 5 b = a - b; //b=10 6 a = a - b; //a=20
这个方法是不是很巧妙呢?但是!它是有缺点的,那就是如果a+b的值超出了int的范围,就会有数据溢出,所以,有没有更好的方法呢?当然有,异或运算符!下面方案三就是介绍异或运算符的巧妙使用。
1 int a = 10; 2 int b = 20; 3 4 a = a ^ b; 5 b = a ^ b; //b = a ^ b ^ b = a 6 a = a ^ b; //a = a ^ b ^ a = b
第三个方法是不是很赞呢!当然,展示给大家的只是很简单的例子,在实际应用中,还是需要仔细加慎重的去选择的。谢谢。