Skip to content

Instantly share code, notes, and snippets.

@wotchin
Created February 10, 2018 06:12
Show Gist options
  • Save wotchin/cee66c13ea80b6dbab51000868299ee2 to your computer and use it in GitHub Desktop.
Save wotchin/cee66c13ea80b6dbab51000868299ee2 to your computer and use it in GitHub Desktop.
from ArrayDeque.java file, find 2^n value. //寻找最临近的2的指数次数值,结果-1可以作为mask使用
private static int getCapacity(int numElements) {
int initialCapacity = numElements;
initialCapacity |= (initialCapacity >>> 1);
initialCapacity |= (initialCapacity >>> 2);
initialCapacity |= (initialCapacity >>> 4);
initialCapacity |= (initialCapacity >>> 8);
initialCapacity |= (initialCapacity >>> 16);
initialCapacity++;
if (initialCapacity < 0) // Too many elements, must back off
initialCapacity >>>= 1;// Good luck allocating 2 ^ 30 elements
return initialCapacity;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment