位操作在算法中的运用
生活随笔
收集整理的這篇文章主要介紹了
位操作在算法中的运用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
位操作在算法中的運用
?
?
1. 與操作&
100 & 111 = 100
?
2. 或操作|
100 | 000 = 100
?
3. 異或^
100 ^ 000 = 100
?
4. 取反~
~100 = 011
?
5. 向左移位<<
1<<2 = 100
即2的2次方,等于4
?
6. 向右移位>>
16>>2 = 00100
即16的2的-2次方,等于4
?
note1:
移位和與操作結合,用來判斷一個數的某一位是否為1,這個功能可以用在subset,即子集問題中。
例如:
判斷數字8的第三位是否為1?
8&(1>>3)==1?
?
note2:
移位和或操作結合,用來將一個新的二進制位存儲到一個整形數中,這個功能常用于優化內存,或者某些棋盤類型的問題中。
例如:將下面的棋盤保存為一個整形數
1 0
0 1
int a = 0;
a |=(number<<i)
?
note3:
移位和異或操作結合,用來將數字的某一位取反,用在棋盤類型的問題中。
例如:
1 0
0 1
轉為1001
若對坐上角1取反,則結果應為1001^=(1<<3)
即
?? 1001
^? 1000
=----------------
???0001
?
?
轉載于:https://www.cnblogs.com/xfei-zhang/p/5086898.html
總結
以上是生活随笔為你收集整理的位操作在算法中的运用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jar包可执行??
- 下一篇: 【Knockout】二、监控属性Obse