1. 程式人生 > >位運算總結(Bit Operation)

位運算總結(Bit Operation)

位運算

數字用二進位制表示後的運算
無論是有符號,無符號還是其他各種型別的數。它們之間的轉換的基石就是二進位制的表示式沒有發生改變,變得只是轉換的表示式。

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"的個數。