首先 >>是右移符号
例如8的二进制01000 右移1位 , 就是 0100 为4;
<<是左移符号 0100 到01000相当于乘2;
(left + right) / 2 ----> left + (right -left) / 2) ------> left + ((right -left) >> 1)
left + right 在某种情况下可能会超过基本类型所能容纳的最大值(溢出),所以使用left + (right -left) / 2); 而且 >> (位运算) 比 / 运算要快所以又left + ((right -left) >> 1) ;
在运算中加减乘 速度一类, 除比较慢, 所以在除2或除4的时候 使用>>运算符更好一点, 但是<<是乘没变化