<<(左移)
在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方
32 << 2 = 32 * 2^2 = 128
16 << 4 = 16 * 2^4 = 256
7 << 2 = 7 * 2^2 = 28
>>(带符号右移)
右移一位相当于除2,右移n位相当于除以2的n次方。这里是取商哈,余数就不要了。
32 >> 2 = 32 / 2^2 = 8
17 >> 2 = 17 / 2^2 = 4.25 = 4(因为只取整数部分)
512 >> 10 = 512 / 2^10 = 0.5 = 0(因为只取整数部分)
>>>(无符号右移)
对于正数来说和带符号右移相同,对于负数来说不同
找到两个(大)整数的舍入平均值的安全有效方法
int mid = (low + high) / 2;
int mid = (low + high) >>> 1;