第一种,位运算。奇数和1相与结果为1,偶数和1相与结果为0. 
奇数肯定不是2的幂,偶数就除2继续判断,一直到除2结果为1为止
#include<stdbool.h>
bool poweroftwo(int n ) {
  if(n <= 0)
      return false;
  while(n > 0)
  {
     if(n & 1 == 1)  
         break;  //奇数就结束
     n = n>>1;
  }
  if(n > 1)   //奇数结束后的结果都>1
      return false;
  else    //偶数结束的结果=1
      return true;
}
第二种更简单:要验证是否是2的幂,就一直除2,看最后是否为1
bool poweroftwo(int n ) {
   while(n > 0 && n % 2 == 0){
       n = n / 2;
   }
   if(n == 1)
       return true;
   return false;
}