C++位運算
——二進制下進行計算(按運算優先級介紹)
引言:我們都知道,計算機的所有操作實際上都是在二進制下進行的,因此,在二進制條件下進行的位運算的速度實際是很快的,在編程中運用適當位運算可以降低程序的時間復雜度。
~取反 : ~x,表示將x的各位取反,即 ~1=0,~1=0。
>> 右移 :x>>p,表示將x右移p位,即可以理解為將二進制下的數x右邊p位舍去。例:(2)10>>1=(10)2>> 1 ==》 (1)2=(1)10;(15)10>>2=(1111)2>>2 ==》(11)2=(3)10
<<左移 :x<<p,表示將x左移p位,即可以理解為將二進制下的數x右邊補p個0。例:(1)10<<1=(1)2<<1 ==》 (10)2=(2)10 ; (3)10<<3=(11)2<<3 ==》 (11000)2=(24)10
& 按位與 :x&p,表示x與p在二進制下進行與運算,法則為:1&1=1, 1&0=0, 0&0=0,x的每一位與p的每一位按這個規則進行運算得出結果。
例: 2&3 ==> 10 ,即結果為2
& 11
10
^ 按位異或 :x^p,表示x與p在二進制下進行異或運算,法則為:1^1=0,1^0=1,0^0=0,x的每一位與p的每一位按這個規則運算得出結果。
例:2&4 ==》 010 ,即結果為6
^ 100
110
|按位或 : x|p,表示x與p在二進制下進行或運算,法則為: 1|1=1,1|0=1,0|0=0,x的每一位與p的每一位按這個規則運算出結果。
例: 2|4==》 010 ,即結果為6
| 100
110