位運算

一、運算符:

(1)“&”:0跟任何數字與的時候都是0,1和某位與的時候不改變它

(2)“|” : 0跟任何數字或的時候不變,1和數字或的時候把它變成1

(3)“^”  :0跟某位異或不改變,1和某位異或的時候取反

(4)“>>”:最右邊的位被拋棄(以1個字節爲例說)

      正數:最左邊添0;00001010>>3=00000001 ;

      負數:最左邊添1;10001010>>3=11110001

(5)“<<”:最左邊的位被拋棄,最右邊統一添0;
(正數)00001010<<3=01010000
(負數)10001010<<3=01010000

二、位運算的幾種題型:

題型一:

下面這種類型的題遵守三個規則:(1)定符號 (2)定數字 (3)構造數字
1、去掉最後一位 |(101101->10110)| 即:右移一位即可
2、在最後加一個0 |(101101->1011010)| 即:左移一位
3、在最後加一個1 |(101101->1011011)| 即:先左移一位再或上1
4、把最後一位變成1 |(101100->101101)| 即:直接或上1
5、把最後一位變成0 |(101101->101100)| 即:右移再左移(不太可靠),不能異或(如果本身就是0呢)。定符號:“&”,定數字 0,構造數字:~1(111110)
6、最後一位取反 |(101101 -> 101100)| 即:按位異或1  定符號 “^”,定數字“1”,構造數字 :1
7、把右數第k位變成1 |(101001->101101,k=3)| 即: “|” 1  構造數字:1<<(k-1)位  100
8、把右數第k位變成0 |(101101->101001,k=3)| 即:“&” 0  構造數字:~(1<<(k-1))
9、右數第k位取反 |(101001->101101, k=3)| 即:"^" 1  構造數字:(1<<(k-1))
10、取末三位  |(1101101 ->101)| 即:不可以左移四位再右移四位,因爲它不止7位, 即: & 1  7(111)
11、取末k位 |(1101101->1101,k=4)| 即:& 1 構造:(1<<k)-1 注:先左移,再減1
12、取右數第k位 |(1101101->1,k=4)| 即:(x>>(k-1))&1

題型二:

13、把右邊連續的1變成0 |(100101111->100100000)| 即:x&(x+1)
14、把右邊起第一個0變成1 |(100101111->100111111)| 即:x|(x+1)
15、把右邊連續的0變成1 |(11011000->11011111)| 即:x|(x-1)

未完待續...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章