public BoundedRange(float minValue, float maxValue, float precision) { this.minValue = minValue; this.maxValue = maxValue; this.precision = precision; requiredBits = BitOperations.Log2((uint)((maxValue - minValue) * (1.0f / precision) + 0.5f)) + 1; mask = (uint)((1L << requiredBits) - 1); }