根据2的幂的数的二进制特点,使用位运算快速判断。
2的幂的数的二进制表示特点是只有一个1后面全是0,将其减去1之后则原数的1变为0,0变为1,如果在跟原数相与,则结果为0。其他任何不是2的幂的数都不满足该条件。
所以
bool IsPower2(unsigned int num)
{
return num>0 ? (num&(num-1) ? false : true) : false;
}
根据2的幂的数的二进制特点,使用位运算快速判断。
2的幂的数的二进制表示特点是只有一个1后面全是0,将其减去1之后则原数的1变为0,0变为1,如果在跟原数相与,则结果为0。其他任何不是2的幂的数都不满足该条件。
所以
bool IsPower2(unsigned int num)
{
return num>0 ? (num&(num-1) ? false : true) : false;
}