如何判断一个正整数是不是2的幂
估计用递归的方法大家都知道,就不赘述了
这里使用一个更简单的方法。
若一个正整数是2的幂,则这个数在计算中的表示肯定是以下形式:0x00...1000...B省略号表示若干个0.问题就转变为一个等价的命题:如何判断给定的一个正整数是如0x00...1000...B这种形式(二进制表示式中只有唯一的一个1)。(B表示是以二进制表示的)
实际上:
如果一个数n是2的幂,则满足 n & (n-1) = 0。
举个特例,如n = 8,即0x1000,则0x1000 & 0x0111 = 0。