leetcode231-Power of Two(判断一个整数n是否为2的方幂)

来源:互联网 发布:站台气候数据 编辑:程序博客网 时间:2024/04/29 12:13

问题描述:

判断一个整数n是否为2的方幂,即是否可以表示成2^X的形式。

问题求解:

判断一个数是2的幂,主要是要找出2的幂次方的数的特点。我们知道,1个数乘以2就是将该数左移1位,而2的0次幂为1, 所以2的n次幂(就是2的0次幂n次乘以2)就是将1左移n位, 这样我们知道如果一个数n是2的幂,则其只有首位为1,其后若干个0,必然有n & (n - 1)为0 !!!(在求1个数的二进制表示中1的个数的时候说过,n&(n-1)去掉n的最后一个1)。因此,判断一个数n是否为2的幂,只需要判断n&(n-1)是否为0即可。

#include <iostream>using namespace std;bool Is2Power(int n){    if(n<=0)    {        return false;    }    return 0==(n & (n-1));}int main(){    for(int i=0;i<=8;i++)    {        cout <<i<<"是否为2的方幂:"<< Is2Power(i) << endl;    }    return 0;}

执行结果:

0是否为2的方幂:01是否为2的方幂:12是否为2的方幂:13是否为2的方幂:04是否为2的方幂:15是否为2的方幂:06是否为2的方幂:07是否为2的方幂:08是否为2的方幂:1
0 0