1

我有一个应该计算阈值的表达式。原始代码是:

float threshold = vertHist.min + ((vertHist.max - vertHist.min)/2);

但后来被修改为:

retVal.threshold = (byte)(minValue + ((maxValue - minValue) >> 1));

我可以理解原始代码及其背后的逻辑,但是有人可以带我看一下后者的代码,它是前者的修订版吗?

谢谢。

4

1 回答 1

1

>>是按位右移运算符。对于正整数(您期望maxValue - minValue是),它具有除以(的幂)2 的效果,编译器实际上有时会用右移替换除以 2,因此您应该避免替换除非您特别需要轮班行为,否则请使用轮班进行除法。

于 2012-10-06T18:23:25.833 回答