判斷是否是2的次方
將一個2的冪次方數表示成二進制數,發現它是100000...,如果將這個數減一,那個1會變成0,0會變成1
因此這個數與其減一后的數進行與運算結果為0.
最快速的方法:
(number & number - 1) == 0
1000
& 0111
-------
0000
計算這個數是2的幾次冪
int log2(ll a) {
int count = 0;
while (1) {
if (a >>= 1)
count++;
else
break;
}
return count;
}