Power of Four问题及解法

本文介绍了一种检查32位带符号整数是否为4的幂的方法。通过两种不同的算法实现:一是利用位操作确保数字为2的幂且1位于奇数位;二是确认数字大于0,为2的幂,并且减1后能被3整除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

Given an integer (signed 32 bits), write a function to check whether it is a power of 4.

示例:

Given num = 16, return true. Given num = 5, return false.


问题分析:

一个数若是4的幂,那么它一定是2的幂,而且转换成二进制时,1总是在奇数位上,而且对于任意4的幂减去1后都能被三整除。


因而有两种解决方案:

class Solution {
public:
    bool isPowerOfFour(int num) {
        return (num > 0) && ((num & (num - 1)) == 0) && ((num & 0x55555555) == num);
    }
};


class Solution {
public:
    bool isPowerOfFour(int num) {
        return num > 0 && (num & (num - 1)) == 0 && (num - 1) % 3 == 0;
    }
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值