好吧,我就献丑,给出我的方法。
//这个方法比较慢,通过左移的方法,来判断输入的数是否为2的次幂
bool exponential(int n)
{
int tmp = 1;
while(n >= tmp)
{
if(tmp == n)
{
return true;
}
tmp = tmp<<1;
}
return false;
}
//直接通过与运算,判断该数的二进制表示中含有1的个数,若仅有高位为1,那么该数就为2的次幂
bool my_exponetial(int n)
{
if((n & (n - 1)) == 0)
{
return true;
}
return false;
}