- 作用1:判斷num是否是2的指數
if(num&(num-1)==0)//num是2的指數
解釋:2的指數的二進制表示為1000,該值減一為0111,兩者相與必為0。
- 作用2:計算num二進制表達中1的個數
int numOf1(int num){
int res=0;
while(num!=0){
res++;
num=num&(num-1);
}
return res;
}
解釋:num的最低位(最右邊)的1被翻轉,直至num為0。