我注意到,在.NET中,Array.BinarySearch(Array array, Object value)
方法使用以下实现来计算两个数字的平均值:
private static int GetMedian(int low, int hi)
{
return low + ((hi - low) >> 1);
}
关于此实现,我有两个问题:
为什么算术移位运算符要显式使用?通过用算术移位代替除以2来优化除法不是编译器的工作吗?
为什么不简单return (low + hi) >> 1;
呢?
不确定,但是也没有害处。
这是为了防止二进制搜索错误的发生。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句