天天看点

java 位运算

public static class Test3 {

 public static void main(String[] args) {

       int i=4;

       System.out.println(~i);//-5 (i的二进制为0100 

       System.out.println(~i&i);//0

       System.out.println(~i|i);//-1

       System.out.println(i>>2);//1  4/2的2次方

       System.out.println(i<<2);//16  4*2的2次方

       System.out.println(i>>>2);//1

       System.out.println(-i>>2);//-1

       System.out.println(-i>>>2);//1073741823

}

x<<y 相当于 x*2y ;x>>y相当于x/2y

    从计算速度上讲,移位运算要比算术运算快。

    如果x是负数,那么x>>>3没有什么算术意义,只有逻辑意义。