一、区别
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