如何判断是一个数是否是2的次幂

请参看笔者的这篇博客 判断一个数是否是2的幂_papaya的博客-CSDN博客

问题

找到比某个数大的最小的2的次幂,比如比255大的最小的2的次幂数就是256,比60大的最小的2的次幂数就是64

原理

如果一个数是2的幂,那么其二进制格式一定为001000,000100这种模型

即从有效位开始算,最高位只有一个1,左侧全部为0。

有一个规律是,这种2的次幂数和比它小的数进行与运算时,结果一定为0

所以,我们从最高位往右侧,逐个位判断,符合这种格式的就是最小的2的幂

代码如下

uint32_t UnlockQueue::roundup_power_of_2(uint32_t val)
{// 已经是2的幂了,可直接返回if ((val & (val-1)) == 0){return val;}// uint32类型中,2的次幂最大数uint32_t andv = 0x80000000;// 逐位右移,直到找到满足val第一个位为1的while ((andv & val) == 0){andv = andv>>1;}// 再左移一位,确保比val大return andv<<1;
}

找到比某个数大的最小的2的次幂相关推荐

  1. 2014百度面试题目---“求比指定整数大且最小的不重复数”解答

    题目:给定任意一个正整数,求比这个数大且最小的"不重复数","不重复数"的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数. 代码: #incl ...

  2. 找出一个正数的比它大的最小的质数

    找出一个比一个正数大的最小的质数 代码如下: import java.util.Scanner; //输出大于某个正整数的n的最小的质数 //第一步:键盘输入一个数(要求是整数) //第二步:开始从大 ...

  3. 求比正整数N大的最小正整数M,且M与N的二进制表示中有相同数目的1

    一般最容易想到的方法就是先计算正整数N用二进制表示时1的个数count1,然后不停地计算N++用二进制表示时1的个数count2,直到碰到count1 == count2成立,代码如下: typede ...

  4. LeetCode 31. Next Permutation-- Python 解法--数学题--比当前数大的最小的数

    LeetCode 31. Next Permutation-- Python 解法–数学题–比当前数大的最小的数 此文首发于我的个人博客:LeetCode 31. Next Permutation-- ...

  5. java寻找最大的字母_【LeetCode(Java) - 744】寻找比目标字母大的最小字母

    [LeetCode(Java) - 744]寻找比目标字母大的最小字母 [LeetCode(Java) - 744]寻找比目标字母大的最小字母 文章目录 1.题目描述 2.解题思路 3.解题代码 1. ...

  6. python语言的生态库都是官方开发的_放弃Python转向Go语言:我们找到了以下9大理由...

    原标题:放弃Python转向Go语言:我们找到了以下9大理由 转用一门新语言通常是一项大决策,尤其是当你的团队成员中只有一个使用过它时.今年 Stream 团队的主要编程语言从 Python 转向了 ...

  7. LeetCode简单题之寻找比目标字母大的最小字母

    题目 给你一个排序后的字符列表 letters ,列表中只包含小写英文字母.另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母. 在比较时,字母是依序循环出现的.举个例子 ...

  8. crontab 最小间隔_今天我间隔了:如何找到不在数组中的最小数字

    crontab 最小间隔 by Marin Abernethy 通过Marin Abernethy 今天我间隔了:如何找到不在数组中的最小数字 (Today I Spaced: how to find ...

  9. python 寻找比目标字母大的最小字符

    寻找比目标字母大的最小字符 给你一个排序后的字符列表 letters ,列表中只包含小写英文字母. 另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母.在比较时,字母是依 ...

最新文章

  1. 海量大数据处理最新面试题-1
  2. pytorch安装教程(Windows版本)
  3. linux mysql5.6编译_Linux 环境下编译安装MySQL5.6的笔记记录
  4. 可以在xml中靠增加属性来实现分组
  5. Windows手动更新补丁
  6. 正则表达式 python3_python3正则表达式总结
  7. win7查看tomcat端口_想研究Tomcat性能调优,看这篇就够了
  8. 【分享】免费建立自己的站点
  9. ArcGIS Pro 简明教程(3)数据编辑
  10. SpringBoot之lombok引入后@Data无法生成getset方法
  11. xp计算机如何查看内存大小,xp如何查看内存大小
  12. 计算机三级——数据库技术
  13. Tomcat9百度云下载
  14. 平行实境游戏设计——《家务战争》初稿
  15. 美通企业日报 | 易车收到腾讯等私有化要约;沃尔玛中国推出快时尚品牌George...
  16. winhex添加删除字节
  17. 润生香港轻零食之品牌零食合作 I 专业·共赢·美味
  18. 轻量级网络 Slimmable Neural Networks
  19. 写给学弟学妹的一些话
  20. JS生成EXCEL(Chrome浏览器)

热门文章

  1. 关于CKeditor的个性应用设置 转
  2. MFC中OnDraw与OnPaint的区别
  3. 异步调用WebService方式!
  4. PHP与MySQL开发中页面乱码的产生与解决
  5. CodeForces - 1547F Array Stabilization (GCD version)(ST表+二分)
  6. java:数字转string 报空指针_《java基础》我踩过三元运算符的坑
  7. PyTorch-数据准备
  8. 机器学习-机器学习简介
  9. Fastai-数据准备
  10. link函数 matlab,安装Excel link插件,实现Excel与Matlab的互联