摘自 java 的 hashmap
比如你输入 16 输出 16,输入 17 输出 32,同理输入 33 输出 64,2 的 31 次方为输出最大值
public static void main(String[] args){
// 输入的值
int cap=33;
int MAXIMUM_CAPACITY = 1<<30;
int n = cap -1;
n |= (n >>> 1);
n |= n >>> 2;
n |= n >>> 4;
n |= n >>> 8;
n |= n >>> 16;
System.out.println( (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n+1 );
}
是不是很神奇,二进制的算法真是充满了趣味
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于