解法一:暴力解法
一个数是否为2的倍数,可分为两者情况1和非1。
1显然是2的倍数,至于其他情况我们仅需暴力模2、处2循环,一旦出现模2结果非0的情况,则表明该数不是2的倍数!
bool func(int x)
{
if (x == 0) return true;
else
{
while (x)
{
if (x % 2) return false;
x /= 2;
}
return true;
}
}
解法二:lowbit(x&-x)
首先,如果一个数是2的倍数,此时该数都对应的二进制只存在唯一 一个1(比如