/*
用位操作,乘2相当于左移1位,所以2的幂只有最高位是1
所以问题就是判断你是不是只有最高位是1,怎判断呢
这些数-1后形成的数,除了最高位,后边都是1,如果n&n-1就可以判断了
如果是2的幂,&的结果是全0
*/
if (n<=0) return false;
return ((n&(n-1))==0);

划重点:

一个数*2,出相当于左移一位

2.判断是不是3的幂,没啥用的一道题

public boolean isPowerOfThree(int n) {
/*
不能用循环和递归 感觉不看答案是做不出来
3的幂都可以被int中最大的3的倍数整数
*/
return n > 0 && (1162261467 % n) == 0;
}

3.判断是不是4的幂

重点就是记住:0x55555555,8个5这个16进制的二进制是:奇数位1,偶数位0,用于提取出一个数的奇数位

/*
2的幂中有些不是4的幂,哪些呢?多写几个不难发现
2的幂特征是:最高位是1,后边的是0
而4的幂除了上边的特征,还有最高位必须是从后边数第奇数位
比如8的二进制是1000,从后边数第4位是最高位,不是4的幂,同理还有32
判断最高位是不是偶数位,用0x55555555&上就行,因为这个数的二进制表示
是奇数位为1,偶数位为0
*/
public boolean isPowerOfFour(int num) {
return num>0&(num&(num-1))==0&(num&0x55555555)!=0;
}

最新文章

  1. error LNK2001: 无法解析的外部符号
  2. T-SQL 基本语法
  3. Java报表工具FineReport导出EXCEL的四种API
  4. {Reship}{Matting}Image Matting
  5. spring获取ApplicationContext对象的方法——ApplicationContextAware
  6. IE6/7中setAttribute不支持class/for/rowspan/colspan等属性
  7. python 将数据随机分为训练集和测试集
  8. CoFun 1613 单词连接
  9. 串的模式匹配——Brute-Force算法
  10. 【Unity优化】Unity优化技巧进阶开篇
  11. 打造SpringBootTemplate(SpringBoot项目的模版)
  12. 关于json.parse和json.stringify的区别
  13. 如何在pycharm中使用配置好的virtualenv环境
  14. vue以及js的一些坑或常用技巧
  15. 大数据技术之_19_Spark学习_02_Spark Core 应用解析小结
  16. [Cordova 之 入门篇]
  17. 1068: [SCOI2007]压缩
  18. UVA 536 Tree Recovery 建树+不建树
  19. 转)Ubuntu安装teamviewer
  20. Android开发利器之Data Binding Compiler V2 —— 搭建Android MVVM完全体的基础

热门文章

  1. 超稳攻略!Rancher 2.3手动轮换证书,保护集群安全!
  2. Centos7安装Kubernetes k8s v1.16.0 国内环境
  3. Spring Security + JJWT 实现 JWT 认证和授权
  4. 解读 authentication.py
  5. rsync 参数说明及使用参数笔记
  6. 数据结构与算法——循环链表的算法实现(Joseph 问题)
  7. STL——容器(Set &amp; multiset)的默认构造 &amp; 带参构造 &amp; 对象的拷贝构造与赋值
  8. ModelViewSet+ModelSerializer使用
  9. NMO not setuid-root (Unix-only)
  10. gnuplot取消曲线标题