LeetCode #342. Power of Four 判斷是否為四的次方

LeetCode #342. Power of Four

題目:輸入一個整數,判斷是不是四的次方。

 

四的次方數的最高位的1都是計數位,

那麼我们只需AND一個數(0x55555555) <==> 1010101010101010101010101010101,

如果得到的數仍然為同一個,

則可以肯定其為四的次方數

    bool isPowerOfFour(int num) {
        return num > 0 && !(num & (num - 1)) && (num & 0x55555555) == num;
    }

節錄自 http://www.cnblogs.com/grandyang/p/5403783.html

自己看的懂得方式,解 Leetcode #342. Power of Four

#二次方包含四次方、但四次方不包含二次方,所以需將其抽離得到答案。

public bool IsPowerOfFour(int num) {
        bool answer =false;
           if (num < 1 )  // 如果數字原本就是0,不是二次方。
            {
                answer = false; 
            }
            else if((num & num - 1) == 0)  // n與n-1 & 後為0,則是二次方。
            {
                if((num & 0x55555555) == num) // 四次方
                {
                    answer = true;
                }
            }
            return answer;
    }

 

本頁面為一點點累積學習寫程式之路。

許多資訊不是正確、或只是自己看的懂得。

如果不小心點進來誤導了您,還真的不好意思。