tableForSize()代码如下:
该方法用来返回大于等于该给定整数的最小2^次幂值;
首先需要了解一下,7=0111,其最小2^次幂为1000=0111+1;
11=1011,其最小2^次幂为10000=01111+1;
29=011101,其最效2^次幂为100000=011111+1;
由上面可以看出来对于给定整数m,其二进制第一次出现1的位数为n,那么其最小2^次幂值为:2的(n+1)次幂或者2的n次幂;
n=n-1;避免n=2^m这种情况,经过下面运算后导致结果比n本身大一倍
n|=n>>>1;确保第一次出现1的位及其后一位都是1;
n|=n>>>2;确保第一次出现1的位及其后三位都是1;
n|=n>>>4;确保第一次出现1的位及其后7位都是1;
n|=n>>>8;确保第一次出现1的位及其后15位都是1;
n|=n>>>16;确保第一次出现1的位及其后面所有位都是1;
此时将n=0x00111111...11;
n+1即为0x0100000......00就是大于等于n的最小2^次幂