Ash*_*wal 0 c math logic bit-manipulation
可能重复:
如何检查数字是否为2的幂
这个问题在接受采访时被问到了.
如何检查数字的2^n格式是{1,2,4,8,16,32 ......
不使用 *,/,+,-,%运营商?
而你也不能使用循环.
aio*_*obe 15
检查二进制表示中是否只设置了一位.
使用旧的n & (n - 1) == 0,以不使用运算符的方式进行转换-.
int powerOfTwo(int number)
{
int numberMinusOne = --number;
++number;
if (number == 0)
return 0;
return (number & numberMinusOne) == 0;
}
Run Code Online (Sandbox Code Playgroud)