*** java位运算的几种便捷操作,可以提高编写效率***
1,思考:2变成8的最快方法
大家都知道2*2*2=8,但是今天我们要利用为运算的相关机制,给大家介绍一种更加快速的方法。
2的二进制数: 8的二进制数:
0010 1000
我们可以直接将2的二进制数直接左移2位即可得到8
System.out.println(2<<2);
2,快速判断一个奇偶数
判断一个数是奇数还是偶数比较常见的方法是用这个数对2取余,如果是奇数则余1,如果是偶书则余0;
这里我们以数字8和数字9举例:
8的二进制数: 9的二进制数:
1000 1001
0001 0001 (与1进行&运算)
二进制机制中我们可以发现这样一个规律,除了最后一位代表1,其余位置(2,4,6,8……)都是2的倍数。
所以我们只需要将这个数字和1进行&(与)运算。偶数就会得到0,奇数就会得到1
System.out.println("9&1"+" = "+(9&1));
System.out.println("8&1"+" = "+(8&1));
System.out.println("0&1"+" = "+(0&1));
3,快速交换2个数字的值
有一杯可乐,一杯牛奶,现在需要将装可乐的杯子装牛奶,装牛奶的杯子装可乐。我们就需要第三个杯子。
要交换2个变量的值,同理,我们需要定义另外一个变量。
今天我们利用^(异或)运算,不定义中间变量直接完成交换。
package zxcv;
public class 另一个乱七八糟的测试 {
public static void main(String[] args) {
int a=5;
int b=99;
a=a^b;
b=a^b;
a=a^b;
System.out.println("a"+"="+a);
System.out.println("b"+"="+b);
}
}
原理:
其实很简单,只需要记住^(异或)的规则:
任何数与自己异或为0,与0异或为自己。
a=a^b;
b=a^b; (把a=a ^ b 带入b=a ^b ^b , b=a ^b ^b ,b=a ^0,b=a)
a=a^b; (把a=a ^ b 带入a=a ^b ^b ,a=a ^b ^a ,a=b ^0,a=b)