public int CurrentImplementation() { var sum = 0; for (int i = 0; i < _testValues.Length; i++) { sum += Bitwise.NumberOfLeadingZeros(_testValues[i]); } return(sum); }
private static int GetBucketIndex(long value, long subBucketMask, int bucketIndexOffset) { var leadingZeros = Bitwise.NumberOfLeadingZeros(value | subBucketMask); // smallest power of 2 containing value return(bucketIndexOffset - leadingZeros); }