-
- 按位與 &
- 按位或 |
- 異或 ^
- 取反 ~
- 左移運算符 <<
- 右移運算符 >>
按位與 &
參加運算的兩個數制,按二進制進行 與運算。如果兩個相應的二進位數為1,剛該位的結果為 1 否則為 0
1 & 1 = 1;
0 & 0 = 0;
0 & 1 = 0;
1 & 0 = 0;
3 = 00000011
5 = 00000101
3&5=00000001 = 1;
如果參加 & 是負數(-3 & -5),則以補碼形式表示為二進制數。然後按位進行 與 運算。 計算補碼的方式見這篇部落格
按位或 |
倆個相應的二進位隻要有一個為1 則該位的結果就是1
| 0 = 0;
| 0 = 1;
| 1 = 1;
| 1 = 1;
異或 ^
若參加運算的兩個二進位同号,則結果為0,異号則為1。
^ = ;
^ = ;
^ = ;
^ = ;
a = a ^ b; //可以用來交換a b的值
b = b ^ a;
a = a ^ b;
取反 ~
用來對二進制取反 即0變1 1變1
左移運算符 <<
用來将一個數的二進位全部左移若幹位
左移一位相當于該數乘2
a = ;
a = ;
a = a<<;
=>= ==>a=
//整體左移位 右補
右移運算符 >>
将二進制位右移2位 移到右端的低位被舍棄
在右移時,需要注意符号位問題。對無符号數,右移時左邊高位移入 0。對于有符号的值,如果原來符号位為 0 (該數為正),則左邊也是移入 0,如果符号位原來為 1(該數為負),則左邊移入的 0 還是 1 ,要取決于所用的計算機系統。移入 0 稱為 邏輯右移,即簡單右移。移入 1 稱為 算術右移
右移一位相當于該數除以2
a = >> ;(八進制表示)
a = >> ;
a =
不同長度的資料進行位運算時,如 a & b 而 a 為 long型,b 為 int 型。 系統會将二者按右端對齊;如果 b 為正數,則左側 16 位補滿 0。若 b 為負數,左端應補滿 1。如果 b 為無符号整數型,則左側補滿 0。
參考:
http://www.cnblogs.com/qkhhxkj/archive/2011/06/29/2093894.html