位运算----参考极客学院

与操作:

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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章