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);
        }