位运算初识---1

简介: 前言 本题为力扣官网第231题。 本题链接:力扣

一、问题分析

要判断一个数是否为2的幂,如果该数小于等于0,则一定不是2的幂,如果该数大于0,我们可以知道如果某个数是2的幂的话,则它的二进制表示一定是最高位是1,其余为全是0,所以我们可以想到,如果对这个数字减1,得到的数最高位是0,其余位全是1,所以可以得到如果一个数是2的幂,则有(n&(n-1))=0,所以可以将程序如下实现。


二、代码实现

class Solution {

public:

   bool isPowerOfTwo(int n) {

    if(n>0&&((n&(n-1))==0))

      return true;

    return false;

   }

};

 


目录
相关文章
|
6月前
|
算法 C语言
C语言----判断n是否是2的次方数,利用到按位与&,算法n&(n-1)
C语言----判断n是否是2的次方数,利用到按位与&,算法n&(n-1)
|
6月前
|
C语言
C语言----寻找100~999范围内的质数--素数
C语言----寻找100~999范围内的质数--素数
|
6月前
|
C语言
C语言----循环---n的k次方
C语言----循环---n的k次方
|
6月前
|
C语言
C语言----递归--n的k次方
C语言----递归--n的k次方
|
7月前
|
存储 算法 Java
LeetCode算法题---两数相加(二)
LeetCode算法题---两数相加(二)
42 0
剑指offer_位运算---二进制中1的个数
剑指offer_位运算---二进制中1的个数
52 0
位运算初识---2
前言 本题为力扣官网342题。 题目链接:力扣
38 0
求数组中只出现一次的数---异或操作
求数组中只出现一次的数---异或操作
71 0
|
开发工具
5分钟从掌握到精通---进制转化
🍀掌握进制间互相转换🍀
589 0
5分钟从掌握到精通---进制转化