关闭

leetcode 231:Power of Two

82人阅读 评论(0) 收藏 举报
分类:

题目:
Given an integer, write a function to determine if it is a power of two.
分析:
本题需要判断一个数是否为2的n次方,通过观察2的n次方的十进制和二进制,可以发现一些规律:
1 2 4 8 16   ….

1 10 100 1000 10000 ….
在二进制表示中我们可以发现2的n次方的最高位为1其他都为0,如果此时我们进行减1操作,最高位变为0,其他低位变为1,最后两个数进行”与“操作,结果为0.
代码:

public class powerOfTwo {
    public static boolean isPowerOfTwo(int n) {
        return n > 0 && (n & (n - 1)) == 0;

    }
    public static void main(String[] args){
        int[] a={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
        for(int i=0;i<a.length;i++){
            boolean result=isPowerOfTwo(a[i]);
            System.out.println("a[i]:"+a[i]+":::"+result);
        }
    }
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8552次
    • 积分:401
    • 等级:
    • 排名:千里之外
    • 原创:33篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条