原理

如果一个数n是2的幂,那么一定是00100这种格式,且n-1的二进制为00011这种格式,如下

2的二进制为  0000 0010,(2-1)的二进制为 0000 0001

4的二进制为  0000 0100,(4-1)的二进制为 0000 0011

8的二进制为  0000 1000,(8-1)的二进制为 0000 0111

16的二进制为0001 0000,(16-1)的二进制为 0000 1111

所以若n为2的幂,则n和n-1做&运算,一定为0

代码如下

bool is_power_of_2(uint32_t n)
{if (n == 0) {return false;}return (n&(n-1)) == 0;
}

判断一个数是否是2的幂相关推荐

  1. 判断一个数是不是2的指数幂

    判断一个数是不是2的指数幂 求一个数是不是2的指数幂 2^0=1,2^1=2,2^2=4,2^3=8 1 1的二进制为1 2的二进制为10 4的二进制为100 8的二进制为1000 发现只有最高位为1 ...

  2. 快速判断一个数是否是4的幂次方,若是,并判断出来是多少次方! .

    将4的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1(1在奇数位置),并且1后面跟了偶数个0: 因此问题可以转化为判断1后面是否跟了偶数个0就可以了. 4的整数次幂的二进制数都为 ...

  3. 快速判断一个数是否是2的幂次方

    public class Test {public static void main(String[] args) {int num = 10;if (0 == (num & (num - 1 ...

  4. 快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方!

    将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0: 因此问题可以转化为判断1后面是否跟了n个0就可以了. 如果将这个数减去1后会发现,仅有的那个1会变为 ...

  5. 如何判断一个数是否为2的幂次方

    最近在OJ上做题,遇到一道题,其中一个细节就是需要判断一个数是否为2的幂次方.初看似乎很简单,可我想来想去,竟然无甚好办法.最后我用一个笨办法解决了,那就是将2 4 8 16 32- -存到一个数组里 ...

  6. C语言编程判断是否为2的幂,C语言判断一个数是否是2的幂次方或4的幂次方

    快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方!将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0: 因此问题可以转化为判断1后面是否跟了n个 ...

  7. 在C语言中如何判断一个数是不是2的幂次方,判断一个数是否为2的幂次方的方法...

    对于如何判断一个数是否为2的幂次方这个问题是很多新手们都好奇的,今天我们就带着这个疑问跟小编去看看判断一个数是否为2的幂次方的方法吧,感兴趣的小伙伴们赶紧收藏起来. 将2的幂次方写成二进制形式后,很容 ...

  8. C语言判断是不是2的幂次方,C语言判断一个数是否是2的幂次方或4的幂次方

    快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方! 将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0: 因此问题可以转化为判断1后面是否跟了n ...

  9. 【c++leetcode】判断一个数是否是2的幂、3的幂、4的幂

    2的幂 题目:给定一个整数,编写一个函数来判断它是否是 2 的幂次方. 思路:一个数是2的次方那么它32位上只能有一个1,其他都是0 方法1:通过将这个数与1进行&运算,判断1的个数是否是1. ...

最新文章

  1. HBase设计与开发性能优化(转)
  2. 一篇文章教你学会Java基础JDBC
  3. P1119 灾后重建(经典floyd)
  4. APP中的第三方“支付”功能该如何测试
  5. 【云图】如何创建云图(云存储)
  6. ST2-045 For POC
  7. 博客园的积分原来是这样算的哦
  8. [HTML5]使用Box2dWeb模拟射箭效果并添加能量槽
  9. M1芯片Macbook最简单从11.3降级到11.2.3教程
  10. Illustrator 教程,如何在 Illustrator 中重新塑造文本?
  11. javaSpring面试题,安排
  12. hdu 1907John博弈
  13. android斗鱼app源代码,android文件管理器源码、斗鱼直播源码、企业级erp源码等
  14. 计算机建立excel文件,用Excel建立数据库 -电脑资料
  15. Windows自带的远程协助工具(非远程桌面)
  16. 网站被黑 怎么检测代码含有后门
  17. 什么是云中台系统_什么是云中的超融合?
  18. Android fragment中广告图片轮播效果的实现(附图 )
  19. 码云新建仓库-代码上传
  20. 什么软件能把蓝底换白底

热门文章

  1. Cisco 2960 交换机密码设置
  2. Windows命令行下的进程管理
  3. HDU - 6610 Game(带修莫队)
  4. POJ - 3020 Antenna Placement(最小路径覆盖-二分图最大匹配)
  5. OpenCV源码安装教程(兼容CUDA)
  6. POJ3695(矩形切割中等题)
  7. 数据结构实验二:迷宫的求解
  8. Web安全实践(14)嗅探,arp欺骗,会话劫持与重放攻击(下)
  9. Inno Setup 5制作安装程序
  10. H.264 视频的 RTP 载荷格式