if(n&(n-1)) then n不是2的幂数;
else n是2的幂数;
原理:如果n=2^K,那么n = 1000...0(k个0),则n-1 = 111...0(k个1);相与之后则为0
如果 n!=2^k,那么
n跟(n-1)第一位都为1,则相与这后然后第一位为1,则不为0.
本文介绍了一种快速判断整数是否为2的幂的方法,通过位运算实现,详细解释了其背后的原理。当一个整数n为2的幂时,n-1与其进行按位与操作结果为0;若n不是2的幂,则结果不为0。
if(n&(n-1)) then n不是2的幂数;
else n是2的幂数;
原理:如果n=2^K,那么n = 1000...0(k个0),则n-1 = 111...0(k个1);相与之后则为0
如果 n!=2^k,那么
n跟(n-1)第一位都为1,则相与这后然后第一位为1,则不为0.
3456

被折叠的 条评论
为什么被折叠?