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: 按位運算的優先級低于比較運算 ==
        }
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容