java 无符号右移>>> 有符号右移>>

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014110320/article/details/83037130

有符号右移>>

有符号右移就是右移之后,左边的补上符号位,正数补0,负数补1

无符号右移>>>

无符号右移就是右移之后,无论该数为正还是为负,右移之后左边都是补上0

左移<<

左移不区分有符号和无符号,都是左移之后右边补上0,最左边的符号位也直接移走

测试代码如下,直接看输出就能明白

        System.out.println("java 右移");
        Integer a = -5;
        System.out.println(Integer.toBinaryString(a));
        System.out.println(Integer.toBinaryString(a >> 2));
        System.out.println(Integer.toBinaryString(a >>> 2));
     
//        java 右移
//        11111111111111111111111111111011
//        11111111111111111111111111111110
//        111111111111111111111111111110      注:前边的两个0被省略了
        
        
        System.out.println("java 负数 左移");
        Integer b = -(int)Math.pow(2, 31);
        System.out.println(Integer.toBinaryString(b));
        System.out.println(Integer.toBinaryString(b << 2));
//      java 负数 左移
//      10000000000000000000000000000001
//      100                                  注:不保留符号位,符号位直接移走
        
        System.out.println("java 正数 左移");
        Integer c = 5;
        System.out.println(Integer.toBinaryString(c));
        System.out.println(Integer.toBinaryString(c << 2));
//      java 正数 左移
//      101
//      10100

猜你喜欢

转载自blog.csdn.net/u014110320/article/details/83037130