231. Power of Two

一、题目

  1、审题

  

  2、分析

    判断给出的数值是否为 2 的幂次方。

 

二、解答

  1、思路

    方法一、

      采用 n & (n-1)每次消掉 n 最右边一个 1 的特点。而 2 的幂次方的二进制形式都是只包含一个 1. eg:2、4、8、16、、、

    // n & (n-1)每次消掉 n 最右边一个 1
    public boolean isPowerOfTwo(int n) {
        return n > 0 && (n & (n-1)) == 0;
    }

    方法二、

      正整数中,2 的幂次方最大为 2 << 30。 判断 n 是否能被 2<< 30 整除即可。

    public boolean isPowerOfTwo2(int n) {
        int max = 1 << 30;
        return n > 0 && (max % n == 0);
    }

 

posted @ 2018-11-08 17:01  skillking2  阅读(103)  评论(0编辑  收藏  举报