位運算----參考極客學院

與操作:

1、指定位清零:    a &= ~(1<<i);

2、獲取指定位的值: a&(1<<i);

3、保留某些位不變: a = a&0xFF;

4、判斷一個數是否是2的冪:return (a&(a-1) == 0 && a != 0);

5、奇偶判斷:bool isOdd(int a)

                          {

                              return (a&1 == 1);   

                          }

或操作:

1、設置指定位: a | = (1<<i);


取反操作:

1、相反數:int oppsite(int a)

      {

           return ~a+1;

       }


異或操作:

1、交換兩個數:void swap(int& a, int& b){

                                 a = a^b;

                                 b = a^b;

                                 a = a^b;

                              }

2、指定位取反: a ^=(1<<i);


移位操作:

1、2的冪次: a <<=2;

2、循環移位: void rol(int& a,int k){

                            a= a<<k | a>>32-k;

                           }


簡單應用:










集合中的位運算
































發佈了40 篇原創文章 · 獲贊 59 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章