>>"算術右移">>"的區別?" type="hidden"/>

java中邏輯右移">>>"算術右移">>"的區別?


1、算數右移 “>>”

考慮符號位,右移1位,若符號位為1,則左邊補1;若符號位為0,則左邊補0。

2、邏輯右移 “>>>”

不考慮符號位,左邊統一補0

例子:

 

 

byte a = ~127; System.out.println(a); a = (byte)(a >>> 2); //強制轉成byte型,將對結果進行截斷 System.out.println(a);

結果如下
-128
-32

分析:
首先, ~127的二進制數為10000000, (~127是取反運算)
但是JAVA在對不足32位的數(byte,char,short)進行移位運算時, 都會先轉成int(32位),所以此時a為11111111111111111111111110000000
移位之后,(00)111111111111111111111111100000
但是你在此a = (byte)(a >>> 2); //強制轉成byte型,將對結果進行截斷
此時a為11100000, 就是32了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM