1
임계 값을 계산하기로되어있는 표현식이 있습니다. 원래 코드는했다 :바이트 연산 C#
float threshold = vertHist.min + ((vertHist.max - vertHist.min)/2);
하지만이었다 다음에 수정 :
retVal.threshold = (byte)(minValue + ((maxValue - minValue) >> 1));
내가 원래 코드와 그 뒤에 논리를 이해할 수 있지만, 누군가가 친절하다, 후자의 코드를 통해 저를 걸을 수 전자의 개정판?
감사합니다.
>> >> 1은 오른쪽으로 1 씩 시프트하는 것을 의미하며 2의 보수가없는 부호없는 정수형에서 2로 나누는 것과 같습니다. 새 코드는 이해할 수 있도록 대신 '/ 2'를 사용해야합니다. 우리 팀 중 하나가이 코드를 내 코드베이스에 체크인했다면 매우 까다로운 코드 검토를 요구할 것입니다! –
고맙습니다. 이것은 대답을 멋지게 요약합니다. 왜 대답으로 제출하지 않았습니까? – Nate
정수 ('long','int','short','byte')에 대해서만 작동한다는 점에 유의하는 것이 중요합니다. 원래의 값이'float'에 할당되었다는 것을 주목하면, 방정식의 타당성에 대해 궁금합니다. 나는 그렇게 할 수있는 극도로 불필요한 최적화라고 말하며 컴파일러가 확실히 당신을 위해 수행 할 것입니다. 그 외에도 나머지 방정식은 같습니다. – pickypg