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

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

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

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

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

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

实际上:

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

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

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

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

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

标签: C
分享给朋友:

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

紫外线擦除程序

无意中得知,tenx十速的TM89系列OTP单片机可以用紫外线擦除程序,这下让我们在初期调试程序的时候节省了不少。以前都是用一个demo板,将程序烧到demo板的EEPROM里,来仿真效果。现在就不用这样折腾了,直接烧录进去,觉得程序有bug,就用紫外线擦除程序,重新烧录。 网上搜了搜关于紫外线擦...

Altium如何增加机械层

Altium如何增加机械层

Altium的机械层(Mechanical),默认只有一层,想多加几层吧,发现与Protel99SE大不相同,折腾了半天,总算是搞定了。 增加机械层步骤如下(以英文版为例,中文版大同小异): 1、在PCB界面,按L键(需先切换到英文输入法),弹出了板层配置的窗口。如图所示。 去掉【Only sho...

贴片电阻电容电感封装尺寸

贴片电阻电容电感封装尺寸

贴片常见封装有9种,用两种尺寸代码来表示。一种尺寸代码是由4位数字表示的EIA(美国电子工业协会)代码,前两位与后两位分别表示电阻的长与宽,以英寸为单位。我们常说的0603封装就是指英制代码。另一种是米制代码,也由4位数字表示,其单位为毫米。下表列出贴片电阻封装英制和公制的关系及详细的尺寸。...

Protel99SE PCB各层的含义

本文收集于网络,整理而成,原文作者未知。 我们在进行印制电路板设计前,第一步就是要选择适用的工作层。Protel 99 SE提供有多种类型的工作层。只有在了解了这些工作层的功能之后,才能准确、可靠地进行印制电路板的设计。 Protel 99 SE所提供的工作层大致可以分为7类:Signal La...

“格林尼治时间”或将退休 明年全球将投票表决

          http://china.nfdaily.cn/content/2011-11/10/content_32922220.htm      &...

基于状态机实现的按键处理算法

基于状态机实现的按键处理算法

这篇文章写了很久了,一直没发,现在发出来吧。 关于按键的基础知识,这里就不多写了,可以参考程序匠人的《按键漫谈》 一次完整的击键过程包括:等待阶段,闭合抖动阶段,有效闭合阶段,释放抖动阶段,有效释放阶段。释放抖动阶段对于按键处理用处不大,所以这个阶段被忽略了,即按键击键包括四个状态:等待阶段,闭合抖...

发表评论

访客

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