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;
}
相关推荐
y = xⁿ1 小时前
【LeetCodehot100】T23:合并k个升序链表
java·数据结构·链表
做怪小疯子2 小时前
Leetcode刷题——8.重叠区间
算法·leetcode·职场和发展
2401_857865232 小时前
C++模块接口设计
开发语言·c++·算法
add45a2 小时前
嵌入式C++低功耗设计
开发语言·c++·算法
DeepModel2 小时前
【概率分布】指数分布(Exponential Distribution)原理、推导与实战
python·算法·概率论
_饭团2 小时前
指针核心知识:5篇系统梳理3
c语言·数据结构·算法·leetcode·面试·学习方法·改行学it
2401_874732532 小时前
C++中的状态模式
开发语言·c++·算法
BB学长2 小时前
LBM vs FVM:谁才是 CFD 的未来?
人工智能·算法·机器学习
闻缺陷则喜何志丹2 小时前
【枚举】P6786「SWTR-6」GCDs & LCMs|普及+
c++·算法·洛谷