一、區別
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