找到比某个数大的最小的2的次幂
如何判断是一个数是否是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的次幂相关推荐
- 2014百度面试题目---“求比指定整数大且最小的不重复数”解答
题目:给定任意一个正整数,求比这个数大且最小的"不重复数","不重复数"的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数. 代码: #incl ...
- 找出一个正数的比它大的最小的质数
找出一个比一个正数大的最小的质数 代码如下: import java.util.Scanner; //输出大于某个正整数的n的最小的质数 //第一步:键盘输入一个数(要求是整数) //第二步:开始从大 ...
- 求比正整数N大的最小正整数M,且M与N的二进制表示中有相同数目的1
一般最容易想到的方法就是先计算正整数N用二进制表示时1的个数count1,然后不停地计算N++用二进制表示时1的个数count2,直到碰到count1 == count2成立,代码如下: typede ...
- LeetCode 31. Next Permutation-- Python 解法--数学题--比当前数大的最小的数
LeetCode 31. Next Permutation-- Python 解法–数学题–比当前数大的最小的数 此文首发于我的个人博客:LeetCode 31. Next Permutation-- ...
- java寻找最大的字母_【LeetCode(Java) - 744】寻找比目标字母大的最小字母
[LeetCode(Java) - 744]寻找比目标字母大的最小字母 [LeetCode(Java) - 744]寻找比目标字母大的最小字母 文章目录 1.题目描述 2.解题思路 3.解题代码 1. ...
- python语言的生态库都是官方开发的_放弃Python转向Go语言:我们找到了以下9大理由...
原标题:放弃Python转向Go语言:我们找到了以下9大理由 转用一门新语言通常是一项大决策,尤其是当你的团队成员中只有一个使用过它时.今年 Stream 团队的主要编程语言从 Python 转向了 ...
- LeetCode简单题之寻找比目标字母大的最小字母
题目 给你一个排序后的字符列表 letters ,列表中只包含小写英文字母.另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母. 在比较时,字母是依序循环出现的.举个例子 ...
- crontab 最小间隔_今天我间隔了:如何找到不在数组中的最小数字
crontab 最小间隔 by Marin Abernethy 通过Marin Abernethy 今天我间隔了:如何找到不在数组中的最小数字 (Today I Spaced: how to find ...
- python 寻找比目标字母大的最小字符
寻找比目标字母大的最小字符 给你一个排序后的字符列表 letters ,列表中只包含小写英文字母. 另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母.在比较时,字母是依 ...
最新文章
- 海量大数据处理最新面试题-1
- pytorch安装教程(Windows版本)
- linux mysql5.6编译_Linux 环境下编译安装MySQL5.6的笔记记录
- 可以在xml中靠增加属性来实现分组
- Windows手动更新补丁
- 正则表达式 python3_python3正则表达式总结
- win7查看tomcat端口_想研究Tomcat性能调优,看这篇就够了
- 【分享】免费建立自己的站点
- ArcGIS Pro 简明教程(3)数据编辑
- SpringBoot之lombok引入后@Data无法生成getset方法
- xp计算机如何查看内存大小,xp如何查看内存大小
- 计算机三级——数据库技术
- Tomcat9百度云下载
- 平行实境游戏设计——《家务战争》初稿
- 美通企业日报 | 易车收到腾讯等私有化要约;沃尔玛中国推出快时尚品牌George...
- winhex添加删除字节
- 润生香港轻零食之品牌零食合作 I 专业·共赢·美味
- 轻量级网络 Slimmable Neural Networks
- 写给学弟学妹的一些话
- JS生成EXCEL(Chrome浏览器)
热门文章
- 关于CKeditor的个性应用设置 转
- MFC中OnDraw与OnPaint的区别
- 异步调用WebService方式!
- PHP与MySQL开发中页面乱码的产生与解决
- CodeForces - 1547F Array Stabilization (GCD version)(ST表+二分)
- java:数字转string 报空指针_《java基础》我踩过三元运算符的坑
- PyTorch-数据准备
- 机器学习-机器学习简介
- Fastai-数据准备
- link函数 matlab,安装Excel link插件,实现Excel与Matlab的互联