Java无符号右移与右移运算符介绍

Java 无符号右移介绍
最近学习Java,看到>>>运算符不太了解,也百度查了查,解释得不是很清晰。那么下面讲解我对>>>运算符的认识:
    >>>运算符:无符号右移运算符
    在学习>>>无符号右移运算符前,我们先了解右移运算符>>
右移运算符
>>右移运算符:正数高位补0,负数高位补1
	看一个例子:
public static void main(String[] args) {
        /**
         * 10的二进制:1010
         * 因为是正数,所以计算机高位的0不会输出
         * 负数会输出32位bit
         */
        System.out.println(Integer.toBinaryString(10 >> 2));
        System.out.println(Integer.toBinaryString(-10));
        System.out.println(Integer.toBinaryString(-10 >> 2));
    }

输出:

0E01DD96-4D5D-47E0-F93B-E003D5942D9C.png

------计算机计算数据只会以补码的方式进行计算。

所以需要懂得原码—>反码—>补码之间的转换关系:

B48E43C5-1998-91C4-9BCB-7EBC5C1F6ABC.png

无符号右移运算符
>>> 无符号右移运算符与 >> 右移运算符的正数相同,只不过关键在于负数的不同,>>>运算符右移:**负数高位补 0 ,其它位不变**
看一个例子:
public static void main(String[] args) {
        System.out.println(Integer.toBinaryString(10 >>> 2));
        System.out.println(Integer.toBinaryString(-10));
        System.out.println(Integer.toBinaryString(-10 >>> 2));
    }

输出:(注意和以上例子比较

E9FD2B70-2398-9754-6BB3-3BA5D3D10AA7.png

解释

345432E6-1BD2-6B97-B7A1-07477AB67559.png

总结:

>>> 和 >> 的区别在于:

>>> 负数高位补 0;

>> 负数高位补1;

收藏 (0)
评论列表
正在载入评论列表...
我是有底线的