ConcurrentHashMap中的2的n次方幂上舍入方法(转)

简介: 最近看JDK中的concurrentHashMap类的源码,其中有那么一个函数: /** * Returns a power of two table size for the given desired capacity.

 

最近看JDK中的concurrentHashMap类的源码,其中有那么一个函数:

复制代码
/**
     * Returns a power of two table size for the given desired capacity.
     * See Hackers Delight, sec 3.2
     */
    private static final int tableSizeFor(int c) { int n = c - 1; n |= n >>> 1; n |= n >>> 2; n |= n >>> 4; n |= n >>> 8; n |= n >>> 16; return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1; }
复制代码

看不明白这是做什么的,但是后来我查看了《hackers delight》(中译:高效程序的奥秘)这本书,才知道这个函数是用来计算c的上舍入到2的n次幂。书上的函数如下图:

已经把《hackers delight》加入书单。

http://www.cnblogs.com/katsura/p/4134737.html

 

目录
打赏
0
0
0
0
95
分享
相关文章
|
10月前
|
C++
3 的幂(C++)
3 的幂(C++)
80 0
|
10月前
231. 2 的幂
231. 2 的幂
|
10月前
|
C++
2 的幂(C++)
2 的幂(C++)
72 1
|
10月前
|
C++
4的幂(C++)
4的幂(C++)
53 0
【剑指offer】-数值的整数次方-12/67
【剑指offer】-数值的整数次方-12/67
求2的N次幂(C++)解决高精度运算
求2的N次幂(C++)解决高精度运算
371 0
剑指offer 15. 数值的整数次方
剑指offer 15. 数值的整数次方
87 0
20天刷题计划-231. 2 的幂
给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等