代碼解釋n |= n >>> 16


public static int nextPowerOf2(int n) {
n -= 1;
n |= n >>> 16;
n |= n >>> 8;
n |= n >>> 4;
n |= n >>> 2;
n |= n >>> 1;
return n + 1;

以65舉例子,

1
2
3
4
5
n-=1;// n=1000000(二進制)
...//16、8無變化
n|=n>>>4;//n=n|(n>>>4)=1000000|0000100=1000100
n|=n>>>2;//n=n|(n>>>2)=1000100|0010001=1010101
...
  • 看出規律來了吧,右移多少位,就把最高位右邊的第x位設置為1;

  • 第二次,就把兩個為1的右邊xx位再設置為1;

  • 第n次,就把上一步出現的1右邊xxxx位置為1;//xxx隨便寫寫,意會

這樣執行完,原來是1000000,變成了1111111,最后加1,就變成2的整數次方數了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM