本文主要內容來源於Java核心技術卷一
概念
位運算指的是對二進制進行的計算處理。主要有 與(&)、或(|)、異或(^)、求反(~)
其特徵爲:“都是1的時候纔是1”
如:
13 & 7 =
計算過程爲:
13的二進制:1101
7的二進制: 0111
得到結果 0101 轉換成10進制則是5
-
###或運算
其特徵爲:“有一位是1結果就是1”13 | 7
計算過程爲
1101
0111
按照或運算得到結果是
1111
轉化成10進製爲:15
-
###移位運算
向左移位:<<
向右移位:>>
表示二進制數向左或者向右移位
例如int x = 2;
int result = x << 2;
System.out.println(result);//8
計算結果過程如下
2的二進制爲 0010
向左移位2則爲 1000 ,轉換成10進制則得到結果爲8。
進制之間的轉換
參考http://c.biancheng.net/view/1725.html
面試題
&、| 和 &&、||有什麼區別?
答:
1.都可以做邏輯運算符,做邏輯運損符時,&和|的所有條件都需要執行,而&&和或的並不是所有條件都需要進行判斷。例如 11 || 22 || 33 此時 11執行完畢後則不會再進行後續判斷,而 11 | 22 | 3==3 則需要將所有條件都執行。
2.|和&可以做位運算符,對數據進行二進制計算。