如何使用java找出不小于x的2的n次方的最小值

发布时间:2022-01-17 14:26:40 作者:清风
来源:亿速云 阅读:141

这篇“如何使用java找出不小于x的2的n次方的最小值”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“如何使用java找出不小于x的2的n次方的最小值”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们一起来看看具体内容吧。

找出不小于x的2的n次方的最小值

注:这题比较绕,先举个例子,如果x是5,我们就返回8,因为8是大于5且最小的2的幂次方,如果x是9就返回16,因为16是大于9且最小的2的幂次方,如果x是16就返回16,因为16是2的幂次方。同理如果x是33就返回64.

答案:

1public static int highestOneBit(int i) {
2    i--;
3    i |= i >>> 1;
4    i |= i >>> 2;
5    i |= i >>> 4;
6    i |= i >>> 8;
7    i |= i >>> 16;
8    return i + 1;
9}

解析:

这题也很容易理解,因为int类型在java语言中是32位的,这里的或运算相当于把int中左边的1往右边铺开,最终会变成一个左边全部是0,右边全部是1的二进制数,然后再加上1就是我们要查找的值,这里为什么要先减去1,这是因为如果一个数正好是2的幂次方,如果不先减去1,那么最终结果将会放大2倍,举个例子,当i是32的时候,如果不先减去1,最终结果就会是64。我们还可以在换种解法

1public static int highestOneBit(int i) {
2    i |= (i >>  1);
3    i |= (i >>  2);
4    i |= (i >>  4);
5    i |= (i >>  8);
6    i |= (i >> 16);
7    return i - (i >>> 1);
8}

这里刚开始计算的时候没有减去1,但最后会执行i-(i>>>1),结果也都是一样的,比如当i等于32的时候,或运算结束之后i的值是64,当执行i-(i>>>1)的时候,又变为32.

Java的特点有哪些

Java的特点有哪些 1.Java语言作为静态面向对象编程语言的代表,实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。 2.Java具有简单性、面向对象、分布式、安全性、平台独立与可移植性、动态性等特点。 3.使用Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

感谢您的阅读,希望您对“如何使用java找出不小于x的2的n次方的最小值”这一关键问题有了一定的理解,具体使用情况还需要大家自己动手实验使用过才能领会,快去试试吧,如果想阅读更多相关知识点的文章,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. c语言求x的n次方的函数介绍
  2. 用Python解决x的n次方问题

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:如何使用java实现最大单词长度乘积

下一篇:vue如何用Echarts画柱状图

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》