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; }
本頁面為一點點累積學習寫程式之路。
許多資訊不是正確、或只是自己看的懂得。
如果不小心點進來誤導了您,還真的不好意思。