Java 中的位移运算符 >> , << , >>>

最近在看一些在学习一些源码,在源码中经常会看到一些位移运算符的使用,比如在看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 二进制表达:

《Java 中的位移运算符 >> , << , >>>》” />    12345二进制表达.png</p><h3>1、左位移运算符 <<</h3><p>如果 e << 1 ,左位移1位:</p><p> <img layer-src=     原文作者:桑小年
    原文地址: https://www.jianshu.com/p/927009730809
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

点赞