MENU

LeetCode342. 4的幂

July 9, 2018 • Read: 245 • LeetCode

image
这是上一道题2的幂的进阶,首先我们看和2的幂有什么不同。2的幂有1,2,4,8......,而4的幂有1,4,16,64,也就是说少了2,8,32......,我们再观察一下他们的二进制数

1:1
2:10
4:100
8:1000
16:10000

我们发现,满足4的幂的条件就是,在满足2的幂的前提下,二进制中1的位置必须是在奇数位。那么如何判断在奇数位?其实只要让其和0101 0101 0101 0101 ...这个二进制数对应的十进制做&即可,0101转换成十进制是5,那么最多的0101构成的十进制就是0x55555555

class Solution {
    public boolean isPowerOfFour(int num) {
        if(num <= 0)
            return false;
        boolean a = (num & (num - 1)) == 0;
        boolean b = (num & 0x55555555) != 0;
        return a && b;
    }
}
最后编辑于: October 10, 2018
Archives Tip
QR Code for this page
Tipping QR Code