java中的運算運算符 與或非(轉)




前兩天看代碼的時候看到了運算 ^、<<、>> ,由於以前不多用到因此一時間不知道怎麼運算了 ,看了下資料,總結一下
1.首先先說說^(異或運算),先看代碼markdown

 
 
 
 
  • 1
  • 2
  • 3
  • 4
public static void main(String[] args) { System.out.println("2^3運算的結果是 :"+(2^3)); //打印的結果是: 2^3運算的結果是 :1 }

那麼這個1是怎麼來的,咱們要知道^、<<、>>等位運算符主要針對二進制,算異或的時候相同的爲0,不一樣的爲1
2轉換成二進制是0010
3轉換成二進制是0011
因此0010^0011的結果就是0001轉換成十進制是1 ,因此2^3=1spa

2.<<向左位移,先看段代碼code

 
 
 
 
  • 1
  • 2
  • 3
  • 4
public static void main(String[] args) { System.out.println("2<<3運算的結果是 :"+(2<<3)); //2<<3運算的結果是 :16 }

在運算的時候一樣要把十進制轉換成二進制, 2的二進制是0010 ,向左移3位後面用000不齊,結果是10000 二進制的10000轉換成十進制是16(從右往左分別是1,2,4,8,16,32….)
3>>向右位移,代碼以下string

 
 
 
 
  • 1
  • 2
  • 3
  • 4
public static void main(String[] args) { System.out.println("2>>3運算的結果是 :"+(2>>3)); //2>>3運算的結果是 :0 }

原理和左移是同樣的,先轉成二進制0010,再向右側移動三位,向右側移動的時候在左側不齊0,移動幾位不齊幾位,移動後的二進制是0000 轉成十進制就是0了。
4.&運算 按位「與」的計算是把兩個數字分別寫成二進制形式,而後按照每一位判斷,&計算中,只要有一個是0就算成0
看下例子:System.out.println(1&2);打印0 , System.out.println(1&1);打印1
下面解釋下緣由
1的二進制爲:0001
2的二進制爲:0010
運算的結果爲:0000 ->0
同理兩個1的&運算的二進制結果爲0001->結果爲1it



</article>
相關文章
相關標籤/搜索