int tableSizeFor(int cap) {int n = cap - 1;n |= n >>> 1; # 001XXXXX --> 0011XXXXn |= n >>> 2; # 0011XXXX --> 001111XXn |= n >>> 4;# 001111XX --> 00111111n |= n >>> 8;# 00111111 --> 00111111 不再变化n |= n >>> 16;# 00111111 --> 00111111 不再变化,因为最大就是32位,所以到此结束return n + 1;}
原文:http://www.cnblogs.com/flyfatty/p/6702093.html