免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1001 | 回复: 0
打印 上一主题 下一主题

如何判断一个整数是不是2的N次幂 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08:41 |只看该作者 |倒序浏览
简单来讲,如果X为2的N次幂,则(X&(X-1)) == 0成立。

*************************************************

The binary representation of integers makes it possible to apply a very fast test to determine whether a given positive integer x is a power of two:

    x is a power of two \Leftrightarrow (x & (x − 1)) equals zero.

where & is a bitwise logical AND operator.

Examples:
−1 = 1...111...1         
−1 = 1...111...111...1
x = 0...010...0         
y = 0...010...010...0
x−1 = 0...001...1         
y−1 = 0...010...001...1
x & (x−1) = 0...000...0         
y & (y−1) = 0...010...000...0

Note that zero is incorrectly considered a power of two by this test.


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP