按位取反~ 按位与& 有假则假 10-->0 00-->0 按位或 | 有真则真10-->1 11-->1 按位异或 异火通灵 11-->0 00-->0 位运算效率最高的 左移<--- 右边空出来的位置补0 a<<b 带符号右移 a>>b---> 左边空出来的位置 补齐原来的符号位 无符号右移 a>>>b--->左边空出来的位置补0 最快的速度计算8*4=32 0000 1000 8 0010 0000 32 8<<2=32 System.out.println(8<<2); 技巧: 左乘右除 左移 右移 8<<2=8*2de2次方=32 8>>2=8/2de2次方=2 通过键盘输入连个数,然后显示两个数交换后的数据: 方法一: int z=x; x=y; y=z; 通过第三变量,交换两个数 ------------------------------ package zaizhu.da; import java.util.Scanner; public class jiaohuan { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("请输入第一个数:"); int x=input.nextInt(); System.out.println("请输入第二个数:"); int y=input.nextInt(); int z=x; x=y; y=z; System.out.println("x="+x+"\ty="+y); } } 方法二:公式法 x=(x+y)-(y=x); ------------------------------ package zaizhu.da; import java.util.Scanner; public class jiaohuan { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("请输入第一个数:"); int x=input.nextInt(); System.out.println("请输入第二个数:"); int y=input.nextInt(); x=(x+y)-(y=x); System.out.println("x="+x+"\ty="+y); } } 方法三:计算 x=x+y; y=x-y; x=x-y; ------------------------------------ package zaizhu.da; import java.util.Scanner; public class jiaohuan { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("请输入第一个数:"); int x=input.nextInt(); System.out.println("请输入第二个数:"); int y=input.nextInt(); x=x+y; y=x-y; x=x-y; System.out.println("x="+x+"\ty="+y); } } 方法四: x=x^y; y=x^y; x=x^y; ------------------------------------------------- package zaizhu.da; import java.util.Scanner; public class jiaohuan { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("请输入第一个数:"); int x=input.nextInt(); System.out.println("请输入第二个数:"); int y=input.nextInt(); x=x^y; y=x^y; x=x^y; System.out.println("x="+x+"\ty="+y); } } -------------------------------------------------------- |
|