這幾個符號總是記不住...這裏詳細記錄一下。
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.