”“我们都是定义左边界(left)和右边界(right)都使用 int 类型,如果 left 和 right 足够大,mid = (left + right)/2,可能会由于 left+right 导致 int 数据类型越界。所以安全的写法是 mid = left + ((right - left) >> 1) 或者 mid = left + (right - left) / 2,推荐使用右移操作,因为右移比除法快。”“
对于上面这段话,如果说left+right直接相加会导致越界,
那么按照他说的,先进行位运算然后再加上left,不会越界,我的疑惑是,既然m = (left + right)/2 = left + ((right - left) >> 1) ,那么最后边的式子,left加上((right - left) >> 1),数值上不就是等于 (left + right)/2吗,那不就一样数据过大了?