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

博主:xiaoweixiaowei 2023-01-18 条评论

这篇“如何使用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。我们还可以在换种解法

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

The End

发布于:2023-01-18,除非注明,否则均为 主机评测原创文章,转载请注明出处。