Java中的 << >> >>>
Java中的 << >> >>> 什么意思?
-
<< 表示左移,不分正负数,低位补0 >> 表示右移,如果该数为正,则高位补0,若为负数,则高位补1 >>> 表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0
System.out.println("16 << 1 : " + (16 << 1)); System.out.println("16 >> 3 : " + (16 >> 3)); System.out.println("16 >> 10 : " + (16 >> 10)); System.out.println("1 >> 1 : " + (1 >> 1)); System.out.println("16 >>> 2 : " + (16 >>> 2)); System.out.println("-16 >> 2 : " + (-16 >> 2)); System.out.println("-16 << 2 : " + (-16 << 2)); System.out.println("-16 >>> 2 : " + (-16 >>> 2));
打印结果
16 << 1 : 32 16 >> 3 : 2 16 >> 10 : 0 1 >> 1 : 0 16 >>> 2 : 4 -16 >> 2 : -4 -16 << 2 : -64 -16 >>> 2 : 1073741820
简单理解:
<< 1 相当于乘以2
>> 1 相当于除以2
>>> 不考虑高位的正负号,正数的 >>> 等同于 >>
位移操作涉及二进制、原码、补码、反码相关,详细参考下文: