您好,登錄后才能下訂單哦!
這篇“如何使用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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。