ConcurrentHashMapソースコードを調べていたとき、私は非常に多くのビットワイズシフト演算子に遭遇しました。いくつかは定数を作成するために適用され、いくつかは変数に適用されます。ConcurrentHashMapのビットワイズシフト演算子の使用
static final int MAXIMUM_CAPACITY = 1 << 30;
static final int MAX_SEGMENTS = 1 << 16; // slightly conservative
long u = (((h >>> segmentShift) & segmentMask) << SSHIFT) + SBASE;
MAXIMUM_CAPACITYのような定数は、ビット単位のシフト演算子を使用しての使用が何であるかを直接その後、宣言することができれば、私は、理解することはできませんよ。
デベロッパーは、10進数ではなくバイナリで考えながら、これらの値を定義するのが簡単だったと思います。 '1 << 30'のバイナリ表現は' 1000000000000000000000000000000'であり、ある意味では10進数 '1073741824'よりも「より単純」に見えます。 – Mena