/* 位运算符(了解)
结论:
- 位运算符操作的都是整型的数据
- <<:在一定范围内,每向左移动1位,相当于*2;
>>:在一定范围内,每向右移动1位,相当于/2
面试题:
最高效的计算 2 * 8? A: 2 << 3 或者 8 << 1
对于位运算符,从底层二进制去看原理。
&两端是用逻辑运算符还是位运算符要看符号两边的情况。
如果是boolean:逻辑。数字:位。
*/
class BitTest {
public static void main(String[] args) {
int i = -21;
System.out.println("i << 2 :" + (i << 2));
System.out.println("i << 3 :" + (i << 3));
System.out.println("i << 27 :" + (i << 27));
int m = 12;
int n = 5;
System.out.println("m & n = " + ( m & n));
System.out.println("m | n = " + ( m | n));
System.out.println("m ^ n = " + ( m ^ n));//拆开看二进制
// 练习:交换两个变量的值
int num1 = 10;
int num2 = 20;
System.out.println("num1 = " + num1 + ", num2 = " + num2);
//plan 1: 定义临时变量(推荐)
//int temp = num1;
//num1 = num2;
//num2 = temp;
//System.out.println("num1 = " + num1 + ", num2 = " + num2);
//plan 2: 来回定义。好处:不用再定义临时变量。
//但是存在弊端:有可能会超出变量存储范围+存在局限性(受类型的限制),只能适用于数值类型
num1 = num1 + num2;
num2 = num1 - num2;
num1 = num1 - num2;
System.out.println("num1 = " + num1 + ", num2 = " + num2);
//plan 3:使用位运算符,可以把k=num1^num2,k和谁异或得到另一个数
num1 = num1 ^ num2;
num2 = num1 ^ num2;
num1 = num1 ^ num2;
System.out.println("num1 = " + num1 + ", num2 = " + num2);
}
}
明天把运算符全部看完!
本文深入讲解了位运算符的基本概念及应用,包括左移、右移等操作,并通过实例演示了如何利用位运算进行变量交换,同时提供了几种不同的变量交换方法。

被折叠的 条评论
为什么被折叠?



