P i*_*P i 5 c algorithm bit-manipulation
可能重复:
查询是否数字是2的幂
如何检查数字是否为2的幂
我需要这个原型的函数体:
bool isPOT(int x);
Run Code Online (Sandbox Code Playgroud)
所以它将返回例如isPOT(3)= FALSE,但isPOT(8)= TRUE
什么是最漂亮/简洁的算法?什么是最有效的?
PS:我很惊讶我在SO上找不到这个问题,所以我完全期待有人发现一些重复.
PPS:有人可以创建POT,NPOT,Power-Of-Two标签吗?
Pau*_*l R 12
bool IsPOT(int x)
{
return (x > 0) && ((x & (x - 1)) == 0);
}
Run Code Online (Sandbox Code Playgroud)
不确定是否发生了这个确切的问题,但检查很简单
x & (x - 1) == 0
Run Code Online (Sandbox Code Playgroud)