Java >>和>>>的区别

在这里插入图片描述

“>>是有符号位移,>>>是无符号位移”,如果移动的是一个非负数,这两个是没有任何区别的比如我们看下

    public static void main(String args[]) {
        System.out.println();
        int num = 10000;
        System.out.println(num + "的二进制表示:           " + Util.bitInt32(num));
        System.out.println(num + "有符号位移之后的二进制表示:" + Util.bitInt32(num >> 3));
        System.out.println(num + "无符号位移之后的二进制表示:" + Util.bitInt32(num >>> 3));
    }

我们再来看下运行结果

10000的二进制表示:           00000000 00000000 00100111 00010000 
10000有符号位移之后的二进制表示:00000000 00000000 00000100 11100010 
10000无符号位移之后的二进制表示:00000000 00000000 00000100 11100010 

“>>和>>>主要是对负数会有区别,我们来看下”

    public static void main(String args[]) {
        System.out.println();
        int num = -10000;
        System.out.println(num + "的二进制表示:           " + Util.bitInt32(num));
        System.out.println(num + "有符号位移之后的二进制表示:" + Util.bitInt32(num >> 3));
        System.out.println(num + "无符号位移之后的二进制表示:" + Util.bitInt32(num >>> 3));
    }

这里把10000改为-10000,再来看下运行结果

-10000的二进制表示:           11111111 11111111 11011000 11110000 
-10000有符号位移之后的二进制表示:11111111 11111111 11111011 00011110 
-10000无符号位移之后的二进制表示:00011111 11111111 11111011 00011110 

版权声明:本文为abcdef314159原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。