int is2power(int num)
{
if(num < 2)
return 0;
if((num & num - 1) == 0 )
return 1;
else
return 0;
}
分析:這是目前我所知道的最快的方式,二進制表示的2的冪次方數中只有一個1,後面跟的是n個0; 因此問題可以轉化爲判斷1後面是否跟了n個0。如果將這個數減去1後會發現,僅有的那個1會變爲0,而原來的那n個0會變爲1;因此將原來的數與上(&)減去1後的數字,結果爲零。判斷一個數是否爲2的冪次
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.