判断x是否为2的若干次幂

原创 2012年03月24日 11:58:35

判断x是否为2的若干次幂

关键运算 i & (i - 1)

i 和 i-1的二进制区别,i若为2的若干次幂,则i与i-1的区别为相反

----------------

1
0000000000000001
0000000000000000
0000000000000000
1
----------------
2
0000000000000010
0000000000000001
0000000000000000
1
----------------
4
0000000000000100
0000000000000011
0000000000000000
1
----------------
8
0000000000001000
0000000000000111
0000000000000000
1
----------------
16
0000000000010000
0000000000001111
0000000000000000
1
----------------
32
0000000000100000
0000000000011111
0000000000000000
1
----------------
64
0000000001000000
0000000000111111
0000000000000000
1
----------------
128
0000000010000000
0000000001111111
0000000000000000
1

测试代码:

#include <iostream>
#include <bitset>
int main()
{
        for (int i = 1; i<=1024; i = 2*i)
	{
		cout<<"----------------"<<endl;
		cout<<i <<endl;
		cout<<bitset<16>(i)<<endl;//二进制输出i
		cout<<bitset<16>(i-1)<<endl;//二进制输入i-1
		cout<<bitset<16>(i & (i - 1))<<endl;
		cout<<((i & (i - 1))?0:1)<<endl;//判断是否为2的若干次幂
	}
	system("pause");
	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【Codeforces Round 274 (Div 2)B】【贪心】Towers 若干次移数后使得最大差值尽可能小

B. Towers time limit per test 1 second memory limit per test 256 megabytes input s...

cocos2d-x 坐标系总结(从如何判断精灵是否在屏幕可见范围谈起)

萌生系统了解这方面的问题这个念头, 是因为今天刚遇到的一个问题。 最近在写一个跑酷游戏,基于cocos2d-x。  在死亡判断的时候,有一个情况,就是主角被移出了屏幕可见范围,则判断为死亡。(玩过天...

cocos2d-x 学习笔记-判断点击点是否在不规则多边形中

本文使用的射线方法, 自己的总结: 注意:        1. 首先射线有可能同时经过多边形的多个顶点, 在此只设置每条线段前面的端点可以相交, 后面的端点不相交。        2. 点在边上:这种...

cocos2d-x Lua事件调用 新版本中Rect判断是否包含Point

版本:cocos2d-x 3.11 语言:Lua   最近一段时间毕业生进入公司,比较的忙,有点忘了博客的事情了。开始找工作的时候真是一波三折啊,自己的各方面技术还有待提高,准备接下来除了工作上的...

多线程题 3个线程各打印一种字母,按顺序打印若干次ABC 的2种实现

打印10000次时,采用锁机制会慢上2.5倍-3倍 采用锁机制 线程实现 public class SyncPrinter implements Runnable { private Strin...

Cocos2d-x中判断点击命中的几种方法

/重载 virtual bool ccTouchBegan(CCTouch *touch, CCEvent *pEvent); virtual void ccTouchMoved(CCTouch *t...
  • luckmmm
  • luckmmm
  • 2013年11月07日 16:09
  • 812

是否可以用cocos2d-x开发跨ios\android等平台应用

有朋友公司想用跨平台引擎开发ios\android等平台应用,先是想使用PhoneGap,最后选择使用cocos2d-x.        选择跨平台的目的就是想一个团队开发多平台终端版本应用,减小开...

【HDU5522 BC61 div2 A】【暴力orSET】Numbers 是否存在x+y=z

Numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/262144 K (Java/Others) Total S...

【Codeforces Round 354 (Div 2)E】【数学 多项式除法 讨论】The Last Fight Between Human and AI 多项式除以x-k是否值整除

E. The Last Fight Between Human and AI time limit per test 1 second memory limit per test 256 me...

cocos2d-x-3.3-019-碰撞检测1-矩形区域是否相交

原文同步发布于我的wiki,查看原文或更新请移步: 点击打开链接 原理 Cocos里面的每个Node都有一个和它对应的矩形区域,通过api getBoundingBox()...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:判断x是否为2的若干次幂
举报原因:
原因补充:

(最多只允许输入30个字)