1
我有一個應該計算閾值的表達式。原來的代碼是:字節操作c#
float threshold = vertHist.min + ((vertHist.max - vertHist.min)/2);
但後來修改爲:
retVal.threshold = (byte)(minValue + ((maxValue - minValue) >> 1));
我能理解原代碼和它背後的邏輯,但也有人親切地走在我通過後者的代碼,這是前者的修訂版本?
謝謝。
「>> 1」表示右移1,這與2的補碼無符號整數數據類型相除。新代碼應該使用'/ 2'來代替,以便理解。如果我的一個團隊將這些代碼檢查到我的代碼庫,它會提示非常苛刻的代碼審查! –
謝謝。這很好地總結了答案。你爲什麼不提交這個答案? – Nate
需要注意的是它只能用整數('long','int','short','byte')來工作。注意到原始值被賦予了一個「浮點數」,這讓我懷疑方程的有效性。我會說,這是一個非常不必要的優化,它是編譯器肯定會爲你做的一件事。除此之外,等式的其餘部分是相同的。 – pickypg