1)按位與運算(&):雙目運算符,其功能是參與運算的兩數對應的二進位相與,只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現
例子:
9&5=1 00001001 (9的補碼) & 00000101 (5的補碼) = 00000001 (1的二進制補碼)。
應用:見本博客前兩篇文章
2)按位或運算(|):雙目運算符,其功能是參與運算的兩數對應的二進位相或,只要對應的二個二進位有一個為1時,結果位就為1。參與運算的兩個數均以補碼出現。
例子:
9|5=13,可寫算式如下: 00001001 (9的補碼) | 00000101 (5的補碼) = 00001101 (十進制為13)
應用:常用來將源操作數某些位置1,其它位不變。 (mask中特定位置1,其它位為0 s=s|mask)、
3)按位異或運算(^):雙目運算符,其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。參與運算數仍以補碼出現。
例子:
9^5=12,可寫成算式如下: 00001001 (9的補碼) ^ 00000101 (5的補碼) = 00001100 (十進制為12)
應用:
- 與0相∧,保留原值;
- 兩個相同數異或,結果為0;
- 異或操作滿足結合律和交換律;
- 將源操作數某些位翻轉(1變0,0變1), (mask中特定位置1,其它位為0 s=s^mask)
- 交換兩個值,不用臨時變量;(如下)
a = a^b; b = a^b; a = a^b;
4)取反運算(~):單目運算符,其功能是對參與運算的數的各二進位按位求反。
例子:
~9的運算為: ~(0000000000001001)結果為:1111111111110110
參考:https://blog.csdn.net/hguisu/article/details/7892596 有詳細解釋 與 demo