public static int nextPowerOf2(int n) {
n -= 1;
n |= n >>> 16;
n |= n >>> 8;
n |= n >>> 4;
n |= n >>> 2;
n |= n >>> 1;
return n + 1;
}

以65举例子,

1
2
3
4
5
n-=1;// n=1000000(二进制)
...//16、8无变化
n|=n>>>4;//n=n|(n>>>4)=1000000|0000100=1000100
n|=n>>>2;//n=n|(n>>>2)=1000100|0010001=1010101
...
  • 看出规律来了吧,右移多少位,就把最高位右边的第x位设置为1;

  • 第二次,就把两个为1的右边xx位再设置为1;

  • 第n次,就把上一步出现的1右边xxxx位置为1;//xxx随便写写,意会

这样执行完,原来是1000000,变成了1111111,最后加1,就变成2的整数次方数了。

最新文章

  1. mongodb未授权访问漏洞
  2. [转]在Eclipse中使用JUnit4进行单元测试(中级篇)
  3. aud$定位错误用户密码登陆数据库的具体信息
  4. C# 表达式树demo
  5. HttpClient_httpclient 4.3.1 post get的工具类
  6. .NET微信通过授权获取用户的基本信息
  7. JSON 数字排序 多字段排序
  8. 大写String和小写string的区别
  9. iPhone 5s网络钓鱼邮件,和苹果发布会同步亮相
  10. Django HTTP处理流程(自我总结)
  11. C++ map multimap
  12. javascript入门篇(四)
  13. 面向复杂应用,Node.js中的IoC容器 -- Rockerjs/core
  14. node 安装 vue-cli 创建vue项目
  15. 【AtCoder】AGC017
  16. 超实用!9个目前流行的MATERIAL DESIGN前端框架
  17. 微信为啥不能直接下载.apk安装包
  18. 您可能不知道的CSS元素隐藏“失效”以其妙用——张鑫旭
  19. python基础(三)python数据类型
  20. [XML] CoolFormat

热门文章

  1. 带有IBM大脑的浮动机器人被成功引导至太空
  2. Java数据类型转换题目
  3. cnpm 安装和 command not found
  4. Delphi Treeview 用法(概念、属性、添加编辑插入节点、定位节点、拖拽等)
  5. boost bimap
  6. vue项目轮播图的实现
  7. contentSize,contentOffset,contentInset整理
  8. SDK与API的理解
  9. flutter中的命名路由
  10. Delphi Base64编码/解码