ph-math/src/main/java/com/helger/numbercruncher/mathutils/IEEE754.java
private void _decompose (final char [] bits,
                           final int bias,
                           final int reserved,
                           final int signIndex,
                           final int signSize,
                           final int exponentIndex,
                           final int exponentSize,
                           final int fractionIndex,
                           final int fractionSize)
  {
    this.m_nBias = bias;

    // Extract the individual parts as strings of '0' and '1'.
    m_sSignBit = new String (bits, signIndex, signSize);
    m_sExponentBits = new String (bits, exponentIndex, exponentSize);
    m_sFractionBits = new String (bits, fractionIndex, fractionSize);

    try
    {
      m_nBiased = Integer.parseInt (m_sExponentBits, 2);
      m_nFraction = Long.parseLong (m_sFractionBits, 2);
    }
    catch (final NumberFormatException ex)
    {}

    m_bIsZero = (m_nBiased == 0) && (m_nFraction == 0);
    m_bIsDenormalized = (m_nBiased == 0) && (m_nFraction != 0);
    m_bIsReserved = (m_nBiased == reserved);

    m_sImpliedBit = m_bIsDenormalized || m_bIsZero || m_bIsReserved ? "0" : "1";
  }
private void _decompose (final char [] bits,
                           final int bias,
                           final int reserved,
                           final int signIndex,
                           final int signSize,
                           final int exponentIndex,
                           final int exponentSize,
                           final int fractionIndex,
                           final int fractionSize)
  {
    this.m_nBias = bias;

    // Extract the individual parts as strings of '0' and '1'.
    m_sSignBit = new String (bits, signIndex, signSize);
    m_sExponentBits = new String (bits, exponentIndex, exponentSize);
    m_sFractionBits = new String (bits, fractionIndex, fractionSize);

    try
    {
      m_nBiased = Integer.parseInt (m_sExponentBits, 2);
      m_nFraction = Long.parseLong (m_sFractionBits, 2);
    }
    catch (final NumberFormatException ex)
    {}

    m_bIsZero = (m_nBiased == 0) && (m_nFraction == 0);
    m_bIsDenormalized = (m_nBiased == 0) && (m_nFraction != 0);
    m_bIsReserved = (m_nBiased == reserved);

    m_sImpliedBit = m_bIsDenormalized || m_bIsZero || m_bIsReserved ? "0" : "1";
  }
Decompose a floating-point value into its parts.

@param bits
the character array of '0' and '1' that represents the value in base
2
@param bias
the exponent bias value
@param reserved
the reserved exponent value (other than 0)
@param signIndex
the index of the sign bit
@param signSize
the size of the sign bit
@param exponentIndex
the index of the exponent
@param exponentSize
the size of the exponent
@param fractionIndex
the index of the fraction
@param fractionSize
the size of the fraction