Power of Four二进制特性--力扣101算法题解笔记

10.3Power of Four二进制特性

题目描述

给定一个整数,判断它是否是4的次方。

输入输出样例

Input :16

Output:true

题解

像这种找是不是x的倍数的题,最好的解法就是先找到在int的范围下,x的最大次方是多少,找到之后,把n和这个数按位与,如果结果不是0,那么就说明这个数是4的次方。

当然,还有两个前置条件,第一就是x必须要大于0,第二就是简单判断是否为2的次方,如果不是 2 的次方的数 = 二进制有好几个 1,导致无法准确判断是否为4的次方。第三步就是判断跟最高次方的与了。

cpp 复制代码
#include <iostream>
using namespace std;

bool isPowerOfFour(int n) {
        bool a = n > 0;                                //n是否>0
        bool b = !(n & (n - 1));        //b为true则证明n是2的次方
        bool c = n & 1431655765;        //判断那个唯一的 1,是不是在偶数位

        return a && b && c;
}

int main() {
        int n = 16;

        if (isPowerOfFour(n)) {
                cout << "true" << endl;
        }
        else {
                cout << "false" << endl;
        }

        return 0;
}
相关推荐
罗西的思考12 小时前
机器人 / 强化学习】HIL-SERL:人类在环驱动的具身智能进化框架
人工智能·算法·机器学习
CSharp精选营15 小时前
关系型 vs 非关系型:从原理到选型,一文搞定数据库核心分类
数据结构·nosql·关系型数据库·非关系型数据库·技术选型
美团技术团队15 小时前
LongCat 开源 VitaBench 2.0:长期动态智能体基准新标杆
人工智能·算法
To_OC1 天前
LC 207 课程表:刚学图论那会儿,我连这是拓扑排序都没看出来
javascript·算法·leetcode
To_OC1 天前
LC 208 实现 Trie 前缀树:曾被名字劝退,写完发现是送分题
javascript·算法·leetcode
BadBadBad__AK1 天前
线段树维护区间 k 次方和
c++·数学·算法·stl
_清歌2 天前
DSpark 深度解读:DeepSeek-V4 如何用「半自回归」把推理速度提升 85%
算法
统计实现局2 天前
SVD 的三步走:双对角化、Givens 收敛、排序
算法
躬行见万象2 天前
《VLA 系列》UniLab 强化训练 | G1 机器人 |复现
算法