在接受采访时已经提出了这个问题。
如何检查某个号码是否为2^n
格式{1,2,4,8,16,32 ......}
不使用*
,/
,+
,-
,%
运营商?
你也不能使用循环。
答案 0 :(得分:15)
检查二进制表示中是否只设置了一位。
答案 1 :(得分:8)
使用旧的n & (n - 1) == 0
,以不使用运算符-
的方式进行转换。
int powerOfTwo(int number)
{
int numberMinusOne = --number;
++number;
if (number == 0)
return 0;
return (number & numberMinusOne) == 0;
}