码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-08-16 23:16:48      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:div   整数   编写   使用   class   amp   integer   OLE   符号   

描述

给定一个整数 (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 的幂)

标签:div   整数   编写   使用   class   amp   integer   OLE   符号   

原文地址:https://www.cnblogs.com/fanguangdexiaoyuer/p/11366495.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!