描述:
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; }