class Operator03 { public static void main(String[] args) { System.out.println("Hello World!"); //左移 System.out.println(3<<2); //12 /* 3 0000 0011 0000 1100 = 10进制 12 */ System.out.println(-3<<2); //-12 /* -3 1000 0011 源码 1111 1100 反码 1111 1101 补码 底层 1111 0100 补码 -1 1111 0011 反码 1000 1100 源码 // -12 */ //右移 System.out.println(3>>2); // 0 /* 0000 0011 0000 0000 */ //无符号右移 System.out.println(8>>>2); // 2 System.out.println(-8>>>2); // 1073741822 System.out.println(-8>>2); // -2 //按位与:& System.out.println(3&7); // 3 /* 0000 0011 0000 0111 0000 0011 */ //按位或:| System.out.println(3|7); // 7 /* 0000 0011 0000 0111 0000 0111 */ //亦或:^ System.out.println(3^7); // 4 /* 0000 0011 0000 0111 0000 0100 */ //取反 ~ System.out.println(~3); // 4 /* 0000 0011 1111 1100 */ //如何交换两个int型变量的值?String呢? int a = 10; int b = 20; //声明临时变量 临时 *** /*int temp = a; a = b; b = temp; System.out.println("a="+a); System.out.println("b="+b); //方案2 溢出问题 变成String int c = a+b; a = c- a ; b = c -a ; System.out.println("a="+a); System.out.println("b="+b); */ //方案3 亦或 对象类型 a = a ^ b ; b = a ^ b ; a = a ^ b ; System.out.println("a="+a); System.out.println("b="+b); } }