BitTest.java 1.2 KB

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