Mentre stavo passando attraverso il codice sorgente ConcurrentHashMap, ho riscontrato così tanti operatori bit shift savianti. Alcuni sono applicati per creare costanti e altri per variabili.Uso dell'operatore bit shift saver in ConcurrentHashMap
static final int MAXIMUM_CAPACITY = 1 << 30;
static final int MAX_SEGMENTS = 1 << 16; // slightly conservative
long u = (((h >>> segmentShift) & segmentMask) << SSHIFT) + SBASE;
io non sono in grado di capire, se costante come MAXIMUM_CAPACITY potrebbe essere dichiarato direttamente allora che cosa è l'uso di utilizzare operatore di spostamento bit a bit.
Penso che gli sviluppatori abbiano avuto un tempo più semplice per definire quei valori mentre pensavano in binario piuttosto che in decimale. La rappresentazione binaria di '1 << 30' è' 1000000000000000000000000000000', che in un certo senso sembra "più semplice" di decimale '1073741824'. – Mena