位運算是指按照二進制進行的運算,在C語言中,提供了6種的位運算符,他們分別是按位與(&),按位或(|),按位異或(^),按位取反(~),左移(《)和右移(》)。這些運算符只能用整型操作數,也就是說只能用于帶符號和不帶符號的short,int,long,char類型。
1:按位與(&)
按位與是指講兩個操作數按照二進制位進行“與”運算。兩個操作數相應的二進制位都為1,結果為1,反之結果為0。這個按位與的運算規則其實和邏輯運算符“與”一樣,只不過是按位與是在二進制位上進行運算。
以3和5舉例說明,3的二進制為00000011(2),5的二進制為00000101(2)這按位與的運算結果為00000001(2)即3&5=1。

2:按位或(|)
按位或是指講兩個操作數按照二進制位進行“或”運算。兩個操作數相應的二進制位只要有一個為1,結果為1,反之結果為0。
以3和5舉例說明,3的二進制為00000011(2),5的二進制為00000101(2)這按位或的運算結果為00000111(2)即3|5=7
3:按位異或(^)
按位異或是指將兩個操作數按照二進制位進行運算,兩個操作數相應的二進制位值只要相同,運算結果為0,反之結果為1。
以3和5舉例說明,3的二進制為00000011(2),5的二進制為00000101(2)這按位異或的運算結果為00000110(2)即3^5=6

4:按位取反(~)
按位取反是單目運算符,只有一個操作數,是將操作數相應的二進制位數值取反。
以5為例,5的二進制數為00000101(2)
按位取反結果為00000010(2)即~5=2

5:左移(《)
左移運算符是用來將一個數的各二進制位左移若干位,移動的位數由右操作數指定(右操作數必須是非負
以3來舉例,3的二進制為00000011,左移結果為00000110,即《3=6

6:右移》
右移運算符是用來將一個數的各二進制位右移若干位,移動的位數由右操作數指定(右操作數必須是非負值),移到右端的低位被舍棄,對于無符號數,高位補0。對于有符號數,某些機器將對左邊空出的部分用符號位填補(即“算術移位”),而另一些機器則對左邊空出的部分用0填補(即“邏輯移位”)。注意:對無符號數,右移時左邊高位移入0;對于有符號的值,如果原來符號位為0(該數為正),則左邊也是移入0。如果符號位原來為1(即負數),則左邊移入0還是1,要取決于所用的計算機系統。有的系統移入0,有的系統移入1。移入0的稱為“邏輯移位”,即簡單移位;移入1的稱為“算術移位”。