[LeetCode] 342. 4的幂 ☆(是否4 的幂)

Posted fanguangdexiaoyuer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 342. 4的幂 ☆(是否4 的幂)相关的知识,希望对你有一定的参考价值。

描述

给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。

示例 1:

输入: 16
输出: true
示例 2:

输入: 5
输出: false

进阶:
你能不使用循环或者递归来完成本题吗?

解析

32位数如果是4的幂,那么只有奇数位有且只有一个1,偶数位都是0。判断条件为:

1. 与0xaaaaaaaa做与运算结果为0。(a=1010)

2. num & (num - 1) == 0,说明只有1位的  1

代码

public boolean isPowerOfFour(int num) 
        if (num == 0) 
            return false;
        
        if (((num & 0xaaaaaaaa) == 0) && (num & (num - 1)) == 0) 
            return true;
         else 
            return false;
        
    
public boolean isPowerOfFour(int num) 
        if (((num & 0xaaaaaaaa) == 0) && (Integer.bitCount(num) == 1)) 
            return true;
         else 
            return false;
        
    

 

以上是关于[LeetCode] 342. 4的幂 ☆(是否4 的幂)的主要内容,如果未能解决你的问题,请参考以下文章

leetcode刷题笔记342 4的幂

LeetCode342. 4的幂 / 第243场周赛

[LeetCode] 342. 4的幂

leetcode342合理运用位操作判断4的幂

342 Power of Four 4的幂

LeetCode 342. 4的幂