当前位置:首页 » 编程语言

leetcode_Power of Two

2015-08-07 08:31 本站整理 浏览(69)

描述:

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

思路:

1.很有意思的一道题目,大致有三种方法:

2.第一种对num进行向右移位,每次移动一个Bit位并和0x1作&运算,共需移位31次,统计num中1出现的次数,有且仅出现一次的话就返回true

3.第二种方法是令tempNum=1,让num和tempNum作&运算,每次移位结束将tempNum左移位,工需移位31次,1有且仅出现一次则返回true

4.第三种方法有点惨无人道,boolean flag=((num&(num-1))==0);flag为真的话则返回true

代码:

仅贴出第三种方法的代码:

public boolean isPowerOfTwo(int n)
	{
	    if(n<=0)
	        return false;
	    return (n&(n-1))==0;
	}