位与

以前在看源码的时候,有很多地方设置长度或则值为2的N次幂,当时不知道为什么?

今天看HashedWheelTimer代码时

private static int normalizeTicksPerWheel(int ticksPerWheel) {
    int normalizedTicksPerWheel = 1;
    while (normalizedTicksPerWheel < ticksPerWheel) {
        normalizedTicksPerWheel <<= 1;
    }
    return normalizedTicksPerWheel;
}

以上代码中normalizeTicksPerWheel得出环的大小,取了一个大于等于ticksPerWheel且是2的N次幂的整数。为啥要取成2的N次幂呢?主要是因为在大小而2的N次幂的环上求索引非常的方便,a & (b-1) = a % b,当b时2的N次幂时成立。

为什么要用按位取与,不用%取余?

由于位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快

常用技巧

a & (b-1) = a % b,当b时2的N次幂时成立。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012092620/article/details/79951339
文章标签: 位与 奇技淫巧
个人分类: 奇技淫巧
上一篇位或
下一篇时间轮
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭