231. Power of Two

Given an integer, write a function to determine if it is a power of two.

Solution:

这题使用一个 trick 就是:
如果一个数 x是2的n 次方,则它除最高位之外,其余 bits 都是0;那么它减1得到的数的二进制表示则为所有 bits 都是1。
因此,如果按位与x 和(x-1)则得0。其余 case 都不会为0。

*2016-11-12:注意!当 x=0时 x&(x-1) = 0,而0不是2的 n 次方。这个 case 碰巧被下面代码中的 if(n <= 0) 排除了

public class Solution 
{
    public boolean isPowerOfTwo(int n) 
    {
        if(n <= 0)
            return false;
        else
        {
            return (n & (n-1)) == 0 ? true : false;  // Note: 按位运算的优先级低于比较运算 ==
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容