这篇“如何使用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的特点有哪些 1.Java语言作为静态面向对象编程语言的代表,实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。 2.Java具有简单性、面向对象、分布式、安全性、平台独立与可移植性、动态性等特点。 3.使用Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
感谢您的阅读,希望您对“如何使用java找出不小于x的2的n次方的最小值”这一关键问题有了一定的理解,具体使用情况还需要大家自己动手实验使用过才能领会,快去试试吧,如果想阅读更多相关知识点的文章,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。