1. /*
    2. 运算符之五:位运算符 (了解)
    3. 结论:
    4. 1. 位运算符操作的都是整型的数据
    5. 2. << :在一定范围内,每向左移1位,相当于 * 2
    6. >> :在一定范围内,每向右移1位,相当于 / 2
    7. 面试题:最高效方式的计算2 * 8 ? 2 << 3 或 8 << 1
    8. */
    9. class BitTest {
    10. public static void main(String[] args) {
    11. int i = 21;
    12. i = -21;
    13. System.out.println("i << 2 :" + (i << 2));
    14. System.out.println("i << 3 :" + (i << 3));
    15. System.out.println("i << 27 :" + (i << 27));
    16. int m = 12;
    17. int n = 5;
    18. System.out.println("m & n :" + (m & n));
    19. System.out.println("m | n :" + (m | n));
    20. System.out.println("m ^ n :" + (m ^ n));
    21. //练习:交换两个变量的值
    22. int num1 = 10;
    23. int num2 = 20;
    24. System.out.println("num1 = " + num1 + ",num2 = " + num2);
    25. //方式一:定义临时变量的方式
    26. //推荐的方式
    27. int temp = num1;
    28. num1 = num2;
    29. num2 = temp;
    30. //方式二:好处:不用定义临时变量
    31. //弊端:① 相加操作可能超出存储范围 ② 有局限性:只能适用于数值类型
    32. //num1 = num1 + num2;
    33. //num2 = num1 - num2;
    34. //num1 = num1 - num2;
    35. //方式三:使用位运算符
    36. //有局限性:只能适用于数值类型
    37. //num1 = num1 ^ num2;
    38. //num2 = num1 ^ num2;
    39. //num1 = num1 ^ num2;
    40. System.out.println("num1 = " + num1 + ",num2 = " + num2);
    41. }
    42. }