最近在看一些在学习一些源码,在源码中经常会看到一些位移运算符的使用,比如在看HashMap源码的时候,在计算hashMap容量的阈值的时候,就使用到了位移运算符,代码如下:
static final int tableSizeFor(int cap) {
int n = cap - 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;
}
对位移运算符概念不熟悉的同学,看到这个估计是一脸懵逼,所以要想完全看懂源码,就需要对位移运算符有一定的了解。下面我用以任意一个10进制的int 数据
int e = 12345 为例进行解析:
12345 二进制表达:
原文作者:桑小年
原文地址: https://www.jianshu.com/p/927009730809
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。