摘自 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 ); }
是不是很神奇,二进制的算法真是充满了趣味
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于