二分查找里面我们总是能见到这样的代码:
int mid = (left + right) / 2;
那int mid = left + right >> 1;又是什么个情况呢?
实际上,通过查操作符优先级表可以知道,+的运算符优先级高于/
所以left + right >> 1等价于(left + right) >> 1,又因为>>1右移1位二进制位相当于/ 2(除上一个2)
具体操作符的介绍可以参考一下我这篇博客:点我跳转
所以,left + right >> 1也就相当于 (left + right) / 2,但前者的运算速度高于后者