判断一个数是否为2的n次幂
参考:http://bbs.csdn.net/topics/370058619
如题,如何判断一个整数是否是2的N次方,我能想到的方法有两个
1.一直除2,看最后是否等于1.(最笨的方法)
2.转换成2进制,看是否是这个样子的:1,10,100,1000,10000,就是除了最高位是1,其他都是0,或者说只有一个1.
3.当我还在为我能想到第二个方法而沾沾自喜的时候,我看到了下面这种更巧妙的方法
| 1 2 3 4 5 6 7 | 以4(100)    7(0111)    8(1000)为例4& 3--> 100& 011= 07& 6--> 0111& 0110!= 08& 7--> 1000& 0111= 0即 如果 m & (m - 1) == 0,则m是2的n次方。 | 
| 1 2 3 | publicstaticbooleanfun(inti){    return(i > 0) && ((i & (i - 1)) == 0);} | 
判断一个数是否为2的n次幂的更多相关文章
- python判断一个数是否是2的几次幂
		判断一个数是不是2的几次幂,最简单粗暴的做法就是直接迭代除以2,这里有一个更好的方法,那就是采用位运算. 我们观察下面属于2的几次幂的数的变化规律,用2进制表示. 十进制 二进制 0 0 2 10 4 ... 
- [算法]判断一个数是不是2的N次方
		如果一个数是2^n,说明这个二进制里面只有一个1.除了1. a = (10000)b a-1 = (01111)b a&(a-1) = 0. 如果一个数不是2^n, 说明它的二进制里含有多一 ... 
- 如何判断一个数是否为素数(zt)
		怎么判断一个数是否为素数? 笨蛋的作法: bool IsPrime(unsigned n){ if (n<2) { //小于2的数即不是合数也不是素数 throw 0; ... 
- 腾讯面试题 腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?
		腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中? 这个题目已经有一段时间了,但是腾讯现在还在用来面试.腾讯第一次面 ... 
- pyhton 查找一个数的所有因子  以及 判断一个数是否是质数 两个小脚本
		最近看到一个网站, 欧拉计划.挺好玩,都是一些算法题.这是本站:http://projecteuler.net/problems 这个是中文站:http://pe.spiritzhang.com/ 下 ... 
- #6   判断一个数是否为2的n次方
		「ALBB面试题」 [题目] 如何判断一个数是否为2的n次方 [题目分析] 看到这种题,相信大家第一反应就是循环除2,这样做肯定是可以得出结果的:但是这种做法无疑大大增加了计算机的运行时间,一个非常大 ... 
- 使用二分查找判断某个数在某个区间中--如何判断某个IP地址所属的地区
		一,问题描述 给定100万个区间对,假设这些区间对是互不重叠的,如何判断某个数属于哪个区间? 首先需要对区间的特性进行分析:区间是不是有序的?有序是指:后一个区间的起始位置要大于前一个区间的终点位置. ... 
- 海量数据找相同数,高配词,不重复的数,判断一个数是否存在,查询串,不同电话号码的个数,中位数,按照query频度排序,topk
		这类题目,首先需要确定可用内存的大小,然后确定数据的大小,由这两个参数就可以确定hash函数应该怎么设置才能保证每个文件的大小都不超过内存的大小,从而可以保证每个小的文件都能被一次性加载到内存中. 1 ... 
- python练习题-简单方法判断三个数能否组成三角形
		python简单方法判断三个数能否组成三角形 #encoding=utf-8 import math while True: str=raw_input("please input thre ... 
随机推荐
- asp.net mvc + mysql + ef6
			1.通过NuGet包管理器安装:EntityFramework6.1.3.MySql.Data.Entity6.9.9 2.添加新建项→ADO.NET实体对象模型(命名MyContext)→空Code ... 
- 【转】python删除文件里包含关键词的行
			import shutil with open('/path/to/file', 'r') as f: with open('/path/to/file.new', 'w') as g: for li ... 
- 转:KVC/KVO原理详解及编程指南
			作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/9674431 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或 ... 
- C# 语言规范_版本5.0 (第15章 委托)
			1. 委托 **(注:此章非常重要,特别是对于图形界面相关的区别于MFC和QT等的消息机制,委托是基石.) 委托是用来处理其他语言(如 C++.Pascal 和 Modula)需用函数指针来处理的情况 ... 
- php,cgi,nginx关系
			nginx是服务器 什么是服务器? 例如:IIS,Apache,Nginx......主要是提供网上浏览网页的服务,应用层使用HTTP协议. CGI,FastCGI CGI全称是"公共网关接 ... 
- 在eclipse中生成实体类
			1.在eclipse的windows中选中preferences在查询框中输入driver definition 2.点击add在Name/type中选中mysql jdbc driver 5.1然后 ... 
- 使用JS通过正则限制input的输入
			第一: 限制只能是整数 type = "text" name= "number" id = 'number' onkeyup= "if(! /^d+$ ... 
- each用法的总结
			1.选择器+遍历 $('div').each(function (i){ i就是索引值 this 表示获取遍历每一个dom对象 }); 2.选择器+遍历 $('div').each(function ... 
- OAuth2.0 工作流程
			重要术语 Authorization Server:授权服务器,能够成功验证资源拥有者和获取授权,并在此之后分发令牌的服务器: Resource Server:资源服务器,存储用户的数据资源,能够 ... 
- easyUI的treegrid列表添加查询
			一些数据使用treegrid显示,添加筛选条件, 首先创建treegrid列表 var tree = $("#TreeGrid").treegrid({ url:"cha ... 
