找大於等於乙個數的最小的2 n

2022-07-13 11:15:17 字數 425 閱讀 7110

最近看hashmap原始碼時,發現給定初始capacity計算threshold的過程很巧妙。

1

static

final

int tablesizefor(int

cap)

這裡是實現了找大於等於cap的最小2^n。cap為int型別,長度32位。

對於乙個正數,找大於該數的最小的2^n,都可以採用這種方式,將n最高位後面全部置為1,然後加1。

相對於一直將n>>>1,找到最高位的位數再構造新樹而言,對於比較大的n來說操作次數更少。

n |= n >>> 1;

n |= n >>> 2;

n |= n >>> 4;

n |= n >>> 8;

n |= n >>> 16;

n += 1;

求乙個數字大於並最接近的2 N

無符號右移 無符號右移運算子 同右移,但是結果全變正數。或 或運算 二進位制中只要乙個為1就為1 在hashmap原始碼中有相關操作,直接分析原始碼如下 返回給定目標容量的2倍冪。將我們傳入的容量設定為大於並最接近的2 n 補位,將原本為0的空位填補為1,最後加1時,最高有效位進1,其餘變為0,如此...

得到乙個2 N數

給定乙個數,使其轉換為2的冪的形式,而轉換後的資料大於或等於原始資料。這裡給出兩種方式 窮舉和位運算,而後者的效率好於前者。只要知道 2的冪的形式的2進製形式就可以了,1 1 2 1 0,2 10 2 1 1,4 100 2 1 2.64 1000000 2 1 6 從而若乙個數的二進位制中,只有乙...

藍橋杯 大於等於n的最小完全平方數

資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 輸出大等於n的最小的完全平方數。若乙個數能表示成某個自然數的平方的形式,則稱這個數為完全平方數 tips 注意資料範圍 輸入格式 乙個整數n 輸出格式 大等於n的最小的完全平方數 樣例輸入 樣例輸出 資料規模和約定 n是32位有符號...