Java int -1无符号右移_java中的无符号右移
生活随笔
收集整理的這篇文章主要介紹了
Java int -1无符号右移_java中的无符号右移
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
java中的byte類型在運算過程中都會被轉(zhuǎn)換為int類型進行運算,這樣在對負的byte類型進行無符號右移的時候會出現(xiàn)和有符號右移同樣的結(jié)果。
example:11110000>>>4 ?我們期待變?yōu)?00001111 ,但結(jié)果變?yōu)?1111111。
原因:11110000先被轉(zhuǎn)換為整型11111111111111111111111111110000,然后無符號右移4位變?yōu)?0001111111111111111111111111111,
截取后8位11111111賦值給原值,出現(xiàn)以上結(jié)果。
技巧:我們可以把要參與運算的byte和0xff按位與(保持低8為不變,高位全部賦0),然后再參與無符號移位。
例子:
public class Test{
public static void main(String[] args){
byte b=(byte)0xf1;
byte c=(byte)(b>>4);//有符號右移
byte d=(byte)(b>>>4);//無符號右移(即高位自動填充0)
byte e=(byte)((b&0xff)>>4);
System.out.println(b+" "+c+" "+d+" "+e);
}
}
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的Java int -1无符号右移_java中的无符号右移的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java main方法调用非静态方法_j
- 下一篇: java美元兑换,(Java实现) 美元