位運算符和位運算

這幾個符號總是記不住...這裏詳細記錄一下。

1,“按位與”運算符(&)

     運算規則:0&0=0,0&1=0,1&0=0,1&1=1;

     example:3&5=1

                       00000011          (3)

             (&)  00000101          (5)

                       00000001          (1)

     用途:(1)清零,如果想將一個單元清零(使其全部二進制位爲0),只需任找一個二進制數a,原來的數中爲1的位,在a中相應爲0。

              (2)要想將哪一位保留下來,就與一個數進行‘與’運算,此數在該位取1。

2,“按位或”運算符(|)

      運算規則:0|0=0,0|1=1,1|0=1,1|1=1;

      example:3|5=7

                       00000011          (3)

             (|)  00000101           (5)

                       00000111          (7)

       用途:經常對一個數據的某些位定值爲1。

3,“異或”運算符(^)

      運算規則:0^0=0,0^1=1,1^0=1,1^1=0;

      example:3^5=6

                       00000011          (3)

             (&)  00000101          (5)

                       00000110          (6)

      用途:(1)使特定位翻轉

               (2)與0 相^,保留原值

               (3)交換兩個值,不用臨時變量(假如a=3,b=4將a與b交換,可用:a=a^b;b=b^a;a=a^b;)

4,“取反”運算符(~)

     ~是一個單目運算符,用來對一個二進制數按位取反,即將0變爲1,1變爲0。

     “取反”運算符的優先級很高。

5,左移運算符(<<)

     將一個數的各二進制位全部左移若干位。

     example:a=a<<2,將a的二進制數左移2位,右補0,若a=15,即二進制數是00001111,左移兩位得00111100,即十進制數60,高位左移後溢出,捨棄。

     用途:一個數左移n位  <=>  一個數*2^n;(左移比乘法快很多,此結論只適用於該數左移時被捨棄的高位中不包含1的情況)

6,右移運算符(>>)

     a>>2 表示將a 的各二進制位左移2 位,移到右端的低位被捨棄,對無符號數,高位補0。

     右移n位相當於除以2^n。

    Tips:在右移時需要注意符號問題,對於無符號數,右移時左邊高位移入0,對於有符號數的值,如果原來符號爲0(該數爲正),則左邊移入也爲0,若原來符號位爲1(該數爲負),則左邊要移入0還是1,要取決於所用的計算機系統。有的系統移入0,有的系統移入1。移入0的成爲“邏輯右移”,移入1的稱爲“算術右移”。

7,位運算賦值運算符

     顧名思義,即位運算符與賦值運算符組合成的符號,比如 &=,|=,>>=,<<=,^=and so on ...

     example:a&=b 相當於 a=a&b; a<<=2 相當於 a= a<<2.

發佈了21 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章