將一個數乘以2的N次冪,將數字左移N位即可。
判斷一個數字x是否是2的n次冪,將x&(x-1)即可,如果結果爲零則x是2的N次冪。
x&(x-1)
還有一個功能是,計算一個數,2進製表示的1的數量
int fun(int x)
{
int countx = 0;
while (x)
{
countx++;
x = x & (x – 1);
}
return countx;
}
因爲每次進行x & (x – 1)
實際上是將最低位的2的次冪抵消掉,有幾個1,就從地位到高位有幾個2的次冪。