计算两个数字的算术平均值(平均值):优化的含义是什么?

谢尔盖·科洛迪(Sergey Kolodiy)

我注意到,在.NET中,Array.BinarySearch(Array array, Object value)方法使用以下实现来计算两个数字的平均值:

private static int GetMedian(int low, int hi)
{
    return low + ((hi - low) >> 1);
}

关于此实现,我有两个问题:

  1. 为什么算术移位运算符要显式使用?通过用算术移位代替除以2来优化除法不是编译器的工作吗?

  2. 为什么不简单return (low + hi) >> 1;呢?

用户541686
  1. 不确定,但是也没有害处。

  2. 这是为了防止二进制搜索错误的发生。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章