按位與、或、異或詳解


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

   一般 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM