当前位置:首页 > 技术心得 > 正文内容

如何判断一个正整数是不是2的幂

xjtudll15年前 (2011-08-27)技术心得10360

估计用递归的方法大家都知道,就不赘述了

这里使用一个更简单的方法。

若一个正整数是2的幂,则这个数在计算中的表示肯定是以下形式:0x00...1000...B省略号表示若干个0.问题就转变为一个等价的命题:如何判断给定的一个正整数是如0x00...1000...B这种形式(二进制表示式中只有唯一的一个1)。(B表示是以二进制表示的)

实际上:

如果一个数n是2的幂,则满足 n & (n-1) = 0。

举个特例,如n = 8,即0x1000,则0x1000 & 0x0111 = 0。

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://www.xjtudll.cn/Exp/192/

标签: C
分享给朋友:

“如何判断一个正整数是不是2的幂” 的相关文章

TM87&TM89文件组织架构

TM87&TM89文件组织架构

一、工程文件TM87,TM89系列每个工程至少包含以下文件:文件后缀名作用PRJ工程组织文件ASM汇编代码文件CC代码文件(仅适用于TM89系列)INC汇编头文件HC头文件(仅适用于TM89系列)LCDLCD配置文件,含仿真信息CFGLCD SEG,COM配置文件OPTMask Option文件OB...

世界城市时间及时区

时区是地球上的区域使用同一个时间定义。以前,人们通过观察太阳的位置(时角)决定时间,这就使得不同经度的地方的时间有所不同(地方时)。时区通过设立一个区域的标准时间部分地解决了这个问题。世界各个国家位于地球不同位置上,因此不同国家的日出、日落时间必定有所偏差。这些偏差就是所谓的时差。 1884年国际经...

VSPD + Keil 实现串口的仿真调试

VSPD + Keil 实现串口的仿真调试

VSPD顾名思义就是在本本上虚拟串口,实际上这个软件做的就是虚拟出一对已经互联的串口。 上面就是虚拟出来了com3和com4,而且已经交叉(默认)连接了,这样相当于本本的com3、com4在外面已经连好了,下面要做的就是在内部分别赋予com3和com4所属终端了。 com4—&mda...

清理金蝶用户异常登录信息SQL语句

重点:删除 t_userprofile 表中某用户的信息 1. 打开帐套管理,找到该帐套,备份帐套 备份完帐套后, ,选中该帐套,然后点属性,在帐套属性里复制数据库实体名 2.在电脑开始程序里打开查询分析器 直接点确定进入 在查询框里输入 use,然后将复制的数据库实体名粘贴其后面,中间要有空白,...

浅谈单片机程序设计中的“分层思想”

    网络转载,出处未知,收藏甚久。     分层的思想,并不是什么神秘的东西,事实上很多做项目的工程师本身自己也会在用。看了不少帖子都发现没有提及这个东西,然而分层结构确是很有用的东西,参透后会有一种恍然大悟的感觉。如果说我不懂LCD...

OKI单片机——ML610Q4XX PWM

OKI单片机——ML610Q4XX PWM

  /***********************************************/ * @brief 初始PWM 引脚 * @details /***********************************************/ void P43_Init...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。