最近在看hashMap的源码的时候看到hashMap构造方法会对传入的initialCapacity初始与maximum_capacity比较
static final int MAXIMUM_CAPACITY = 1 << 30;
所以网上看了一下位运算的含义,具体的细节不过多研究,目的主要是为了看到的时候能明白计算结果
1.左移
左移运算符“<<” - 使指定值的所有位都左移规定的次数。
左移m<<n 代表把数字m在无溢出的前提下乘以2的n次方。
例如,5<<3 就是5乘以2的3次方,结果是40。
2.右移
右移运算符“>>” - 使指定值的所有位都右移规定的次数。
右移m>>n 代表把数字m除以2的n次方,原来是正数的还是正数,负数还是负数。注意,如果是单数,也就是二进制末位为1,则结果是将m除以2的n次方的整数商。
例如,16>>3 就是16除以2的3次方,结果是2。
15>>3 就是14(15-1)除以2的3次方,结果是1。