黑马程序员技术交流社区

标题: 位运算符 [打印本页]

作者: zeng1994    时间: 2015-4-16 01:06
标题: 位运算符
  1. /*
  2.         位运算符:

  3.         1.<< : 将左操作数的二进制位,向左移动右操作数的位数;右侧空位补0;
  4.                         int num1 = 10;
  5.                         System.out.println(num1 << 2);

  6.                         实际移动的位数 = 右操作数 % 32

  7.                         每左移1位,相当于原数 * 2;

  8.         2.>> : 带符号右移:每右移1位,右侧数字丢弃,左侧补原最高位的(符号位)的值。

  9.                         每右移一位,相当于原数 / 2;

  10.                         正数右移,始终是正数;
  11.                         负数右移,始终是负数;

  12.         3.>>> : 无符号右移:每右移1位,右侧数字丢弃,左侧补0;
  13.                         对于负数,一旦无符号右移1位,将变为正数;

  14.         4.& :按位与:两位都是1,结果为1,其它都为0;

  15.         5.| : 按位或:有1位是1,结果为1,其它都为0;

  16.         6.^ : 按位异或:两位相同,结果0,不同结果为1;

  17.         7.~ : 按位取反:0 变 1 ,1 变 0;
  18. */
  19. class Demo
  20. {
  21.         public static void main(String[] args)
  22.         {
  23.                 int num1 = 10;
  24.                 System.out.println("num1 << 2 : " + (num1 << 2));//40
  25.                 System.out.println("num1 = " + num1);//原值不变

  26.                 int num2 = 1;//0000 0000 0000 0000 0000 0000 0000 0001
  27.                 System.out.println("num2 << 30 : " + (num2 << 30));
  28.                 System.out.println("num2 << 31 : " + (num2 << 31));
  29.                 System.out.println("num2 << 32 : " + (num2 << 32));
  30.                 System.out.println("num2 << 33 : " + (num2 << 33));


  31.                 int num3 = 1;
  32.                 System.out.println("num3 >> 1 : " + (num3 >> 1));

  33.                 int num4 = -1;
  34.                 System.out.println("num4 >> 1 : " + (num4 >> 1));

  35.                 int num5 = -48789;
  36.                 System.out.println("num5 >>> 1 : " + (num5 >>> 1));//结果是正数;

  37.                 int num6 = 3;
  38.                 int num7 = 5;
  39.                 System.out.println("num6 & num7 : " + (num6 & num7));

  40.                 int num8 = 3;
  41.                 int num9 = 4;

  42.                 System.out.println("num8 | num9 : " + (num8 | num9));

  43.                 int num10 = 3;
  44.                 int num11 = 5;

  45.                 System.out.println("num10 ^ num11 : " + (num10 ^ num11));

  46.                 int num12 = 1;

  47.                 System.out.println("~num12 : " + (~num12));

  48.                 int num13 = -1;
  49.                 System.out.println("~num13 : " + (~num13));

  50.         }
  51. }
复制代码







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2