TheAlgorithms/C-Sharp · error · ArgumentException

Provided number is too big

Error message

Provided number is too big

What it means

BitArray.Compile(int) throws ArgumentException when the binary representation of the number requires more bits than the array holds (binaryNumber.Length > field.Length). The constructed BitArray has a fixed capacity, and numbers needing more bits (e.g., a large int compiled into a 4-bit array) cannot be represented.

Solutions

  1. Use `number > 0 && Convert.ToString(number, 2).Length <= field.Length` as a pre-check, or check number < (1 << field.Length)
  2. Construct the BitArray with a length >= the number's bit length (typically 32 for arbitrary ints)
  3. Mask the number to the array width if truncation is acceptable: `number & ((1 << field.Length) - 1)`
  4. Catch ArgumentException and fall back to a larger BitArray

Example fix

// before
smallArray.Compile(number); // throws if number needs more bits
// after
if (Convert.ToString(number, 2).Length <= smallArray.Length)
{
    smallArray.Compile(number);
}
else
{
    var bigArray = new BitArray(Convert.ToString(number, 2));
    bigArray.Compile(number);
}
Defensive patterns

Strategy: validation

Validate before calling

if (number > 0 && Convert.ToString(number, 2).Length <= bitArray.Length) bitArray.Compile(number);

Type guard

static bool FitsBitWidth(int number, int width) => number > 0 && number < (1 << width);

Try / catch

try { bitArray.Compile(number); } catch (ArgumentException) { /* too big for array: grow or mask */ }

Prevention

When it happens

Trigger: `bitArray.Compile(number)` where 2^(field.Length) <= number, e.g., compiling 256 into an 8-bit BitArray, or any int whose binary length exceeds the array built from a shorter string.

Common situations: Downsizing arrays after refactoring; compiling values from widening input (user input, network data) into a fixed-size array; assuming int.MaxValue-fitting values always work.

Understand the failure class

Background: "value must be between 0 and 1" / "out of range" / "must not be negative" errors: fixing range-validation failures across open-source libraries — this error's family across 42 libraries.

Related errors


AI-assisted analysis of TheAlgorithms/C-Sharp@96e2905cab (2026-09-13). Data as JSON: /api/errors/f0e5f7144e650d78. Report an issue: GitHub.

Appendix: source

Thrown at DataStructures/BitArray.cs:575

    ///     Compiles integer number into the inner data structure.
    ///     Assumes: the number must have the same bit length.
    /// </summary>
    /// <param name="number">A positive integer number.</param>
    public void Compile(int number)
    {
        // precondition I
        if (number <= 0)
        {
            throw new ArgumentException($"{nameof(number)} must be positive");
        }

        // converts to binary representation
        var binaryNumber = Convert.ToString(number, 2);

        // precondition II
        if (binaryNumber.Length > field.Length)
        {
            throw new ArgumentException("Provided number is too big");
        }

        // for appropriate scaling
        if (binaryNumber.Length < field.Length)
        {
            var difference = field.Length - binaryNumber.Length;
            binaryNumber = new string('0', difference) + binaryNumber;
        }

        // actual compile procedure.
        for (var i = 0; i < binaryNumber.Length; i++)
        {
            field[i] = binaryNumber[i] == '1';
        }
    }

    /// <summary>
    ///     Compiles integer number into the inner data structure.

View on GitHub (pinned to 96e2905cab)