Java 面试题 Java 中>>和>>>的区别

一、区别

1. 区别

1.( >>) 表示右移,即 : 该数为正,高位补数 0 ,如果为负数,高位补数 1
2. ( >>> )无符号右移,也叫逻辑右移,即 :该数为正,高位补数 0 ,如果为负数,高位补数0

2.结论

 * 二、结论
 * 1. 正数: 右移 和 无符号右移 答案一致
 * 2. 负数:不一致
 *      2.1 右移依旧减半,
 *      2.2 无符号右移会产生一个很大的正数
 * `

3。代码实例

package NMID.week01;

/**
 * 1. >> 表示右移,即 : 该数为正,高位补数 0 ,如果为负数,高位补数 1
 * 2.  >>> 无符号右移,也叫逻辑右移,即 :该数为正,高位补数 0 ,如果为负数,高位补数0
 * 二、结论
 * 1. 正数: 右移 和 无符号右移 答案一致
 * 2. 负数:不一致
 *      2.1 右移依旧减半,
 *      2.2 无符号右移会产生一个很大的正数
 */
public class 右移无符号右移的区别 {
    public static void main(String[] args) {
        int a1 = 2;//2 的 二进制是 0000 0010
        int b1 = a1>>1;//2 向右移动,高位由0补齐, b1 0000 0001
        System.out.println("2>>1 后: "+b1);
        int a2 = -2 ; //-2 的 二进制是 1111 1101 ,
        int b2 = a2>>1;//如果为负数,高位补数 1: b2 1111 1110
        System.out.println("-2>>1 后:"+b2);
        System.out.println("--------1.正数的>>和>>>一致的,都是减半--------------");
        System.out.println("---------------2. 负数:不一致--------------\n" +
                " *      2.1 右移依旧减半,\n" +
                " *      2.2 无符号右移会产生一个很大的正数");
        int a3 = -2;
        int b3 = a3>>>1;
        System.out.println("-2>>>1 的结果:"+b3);
    }
}

Run:

2>>1 后: 1
-2>>1 后:-1
--------1.正数的>>和>>>一致的,都是减半--------------
---------------2. 负数:不一致--------------
 *      2.1 右移依旧减半,
 *      2.2 无符号右移会产生一个很大的正数
-2>>>1 的结果:2147483647

Process finished with exit code 0

4.拓展:只有无符号右移 >>> 没有无符号左移 <<<!!!

原创文章 132 获赞 11 访问量 4691

猜你喜欢

转载自blog.csdn.net/jarvan5/article/details/106086509