java移位操作符注意的问题
生活随笔
收集整理的這篇文章主要介紹了
java移位操作符注意的问题
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
如果對(duì)char,byte或者short類型的數(shù)值進(jìn)行移位處理,那么在移位進(jìn)行之前,他們會(huì)被轉(zhuǎn)為int類型,
并且所得到的結(jié)果也是一個(gè)int型。
若對(duì)long類型的數(shù)值進(jìn)行處理所得到的結(jié)果也是long。
如果對(duì)byte或者short值進(jìn)行這樣的右移(>>>=)運(yùn)算,得到的可能是不正確的結(jié)果,他們會(huì)被轉(zhuǎn)成int類型,
然后被截?cái)?#xff0c;賦值給原來的類型.
public class Test {/*** @param args*/public static void main(String[] args) {int i=-1;System.out.println(Integer.toBinaryString(i));i>>>=10;System.out.println(Integer.toBinaryString(i));byte b=-1; //11111111System.out.println(Integer.toBinaryString(b)); //調(diào)用Integer的toBinaryString(int x) 32個(gè)1b>>>=10; //移位后為1111111111111111111111,因?yàn)閎是byte類型,所以b= 11111111,還是-1的值System.out.println(Integer.toBinaryString(b)); //又輸出32個(gè)1b=-1;System.out.println(Integer.toBinaryString(b));System.out.println(Integer.toBinaryString(b>>>10)); //移位后沒有賦值,直接輸出,22個(gè)1 }}11111111111111111111111111111111
1111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
1111111111111111111111
?
轉(zhuǎn)載于:https://www.cnblogs.com/xurui1995/p/5188170.html
總結(jié)
以上是生活随笔為你收集整理的java移位操作符注意的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英语语法最终珍藏版笔记-3几个常用时态的
- 下一篇: WP8.1程序开发,可视树VisualT