随笔-如何判断一个数是否是2的n次方O(1)算法
题目: 如何判断一个数是否是2的n次方,要求时间复杂度为O(1);
思路:本题考察的是位运算,尤其是对二进制的理解;当一个数为2的n 次方时,整个二进制数,只有他本位是1 其他位为0,如果我们给这个数减一,那么本位变为0 其他位全部变成1;我们可以通过&运算, 如果为0即为2的n次方; 本题暂不讨论n为分数(既浮点数)的情况;
例: 我们通过8来进行距离 他是2的3次方
代码实现
public static boolean isPower(int n){if(n<1)return false;return n&(n-1)==0;
}
随笔-如何判断一个数是否是2的n次方O(1)算法相关推荐
- 快速判断一个数是否是4的幂次方,若是,并判断出来是多少次方! .
将4的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1(1在奇数位置),并且1后面跟了偶数个0: 因此问题可以转化为判断1后面是否跟了偶数个0就可以了. 4的整数次幂的二进制数都为 ...
- 快速判断一个数是否是2的幂次方
public class Test {public static void main(String[] args) {int num = 10;if (0 == (num & (num - 1 ...
- 快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方!
将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0: 因此问题可以转化为判断1后面是否跟了n个0就可以了. 如果将这个数减去1后会发现,仅有的那个1会变为 ...
- 如何判断一个数是否为2的幂次方
最近在OJ上做题,遇到一道题,其中一个细节就是需要判断一个数是否为2的幂次方.初看似乎很简单,可我想来想去,竟然无甚好办法.最后我用一个笨办法解决了,那就是将2 4 8 16 32- -存到一个数组里 ...
- C语言编程判断是否为2的幂,C语言判断一个数是否是2的幂次方或4的幂次方
快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方!将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0: 因此问题可以转化为判断1后面是否跟了n个 ...
- 在C语言中如何判断一个数是不是2的幂次方,判断一个数是否为2的幂次方的方法...
对于如何判断一个数是否为2的幂次方这个问题是很多新手们都好奇的,今天我们就带着这个疑问跟小编去看看判断一个数是否为2的幂次方的方法吧,感兴趣的小伙伴们赶紧收藏起来. 将2的幂次方写成二进制形式后,很容 ...
- C语言判断是不是2的幂次方,C语言判断一个数是否是2的幂次方或4的幂次方
快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方! 将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0: 因此问题可以转化为判断1后面是否跟了n ...
- c语言判断一个数是否为质数的n次方,C语言中 输入一个数 判断这个数是否为3的N次方 求代码...
C语言中 输入一个数 判断这个数是否为3的N次方 求代码 答案:4 信息版本:手机版 解决时间 2019-10-03 18:55 已解决 2019-10-03 01:54 C语言中 输入一个数 判断 ...
- 如何判断一个数是否为2的N次方
题目:给定一个整数num,判断这个整数是否是2的N次方.比如,2,4,8是2的那次方,6,10不是2的N次方. 请看下面的程序: public static bool Check1(int num) ...
最新文章
- 2021.09 电子学会 - 软件编程(图形化)试题讲解
- mysql proxy性能差_两种MySQL-Proxy架构的测试对比记录
- Install matplotlib Error: src/ft2font.h:16:22: fatal error: ft2build.h: No such file or directory
- 利用Access-Control-Allow-Origin响应头解决跨域请求
- 剑指offer(23)二叉搜索树的后序遍历序列
- 漫画:如何实现大整数相加
- imagick php 缩放,php使用imagick模块实现图片缩放、裁剪、压缩示例
- 【2018ACM山东省赛 - E】Sequence(树状数组,思维,优化)
- CSS3那些不为人知的高级属性
- 2017.4.07 js 中的function 实现的方式
- ACM模式数组构建二叉树
- 第五十节,面向对象基本介绍
- 【车道线检测与寻迹】4月20 欧式、4D、8D、方向倒角距离ODT距离变换
- 安装 virtualenvwrapper
- 大事件,Java被超越了,2021年5月TIOBE编程语言排行榜出炉
- 高校科研管理系统源代码_高校科研信息管理系统
- Qt之QPA(linuxfb 一)
- VM虚拟机桥接模式的复制物理网络连接状态是什么意思
- 计算机配置扫盲,小白买电脑不知所措?最全的扫盲知识
- 维谛技术(Vertiv)开启网络能源新时代