位運算總結(Bit Operation)
阿新 • • 發佈:2018-12-05
位運算
數字用二進位制表示後的運算
無論是有符號,無符號還是其他各種型別的數。它們之間的轉換的基石就是二進位制的表示式沒有發生改變,變得只是轉換的表示式。
1.簡單的布林運算 Boolean algebra
與&,或|,非~,異或^
與& | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
或 | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 1 |
非 ~ | |
---|---|
0 | 1 |
1 | 0 |
異或 ^ | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 0 |
2.邏輯運算 logical operation
邏輯運算子 &&,||,!
記住這寫運算只返回 ture or false ,也就是返回 0,1
例子 | 運算結果 |
---|---|
!0x41 | 0x00 |
!0x00 | 0x01 |
0x69&&0x55 | 0x01 |
還有一個重要的性質
就是當第一個引數可以評估整個表示式的時候,這個時候結束返回,不需要再去評估第二個引數了
3.移位運算 shift operation
左移,left shift operation
右移,right shift operation :
- 邏輯右移:直接進行移動填充0
- 算術右移:填補most significant value ,也就是填充符號位
00001010>>2=00000010
10001010>>3=11110001
4.還需要注意的知識點
特別提醒:
- 無符號數和有符號數之間的轉換,或者是運算。要非常小心overflow
- 可以使用移位運算來代替除法,移位運算的效率更高
- 再就是一些需要積累的小技巧,例如 n&(n-1) 進行迴圈可以求出 n二進位制表示式中的"1"的個數。