当前位置: 首页 > news >正文

判断一个数是否为2的幂次

int is2power(int num) 
{  
    if(num < 2)  
       return 0;  
    if((num & num - 1) == 0 )  
       return 1;  
    else  
       return 0;  
 }  
分析:这是目前我所知道的最快的方式,二进制表示的2的幂次方数中只有一个1,后面跟的是n个0; 因此问题可以转化为判断1后面是否跟了n个0。如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数与上(&)减去1后的数字,结果为零。

参考博文:http://sharong.iteye.com/blog/1992322


相关文章:

  • C99标准的新特性
  • C/C++标准资料
  • 如果我再次被面试,我会问的几个问题
  • Linux 常用命令记录
  • C++关键字
  • Open Broadcaster Software源码阅读笔记
  • 简单算法--迭代/递归
  • 背包九讲笔记
  • 关于类成员函数中静态变量的一点提示
  • C++ 强制类型转换若干问题
  • 面向对象设计原则
  • C++之父FAQ阅读笔记
  • 要完成的学习或考试任务
  • 类的const、static、const static成员初始化位置及其他需要注意的问题
  • ldd
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • bootstrap创建登录注册页面
  • Centos6.8 使用rpm安装mysql5.7
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • ES学习笔记(12)--Symbol
  • Java小白进阶笔记(3)-初级面向对象
  • node.js
  • Object.assign方法不能实现深复制
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 每天一个设计模式之命令模式
  • 免费小说阅读小程序
  • 目录与文件属性:编写ls
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 设计模式走一遍---观察者模式
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 跳前端坑前,先看看这个!!
  • 一个JAVA程序员成长之路分享
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​低代码平台的核心价值与优势
  • ​人工智能书单(数学基础篇)
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (2)(2.10) LTM telemetry
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (二)hibernate配置管理
  • (二)springcloud实战之config配置中心
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (四)Android布局类型(线性布局LinearLayout)
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)树状数组
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET CORE Aws S3 使用
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据