Smallest Normalized Single-Precision Float Value
This article explains the exact value of the smallest positive normalized single-precision floating-point number defined by the IEEE 754 standard. It covers the underlying binary representation, the formula used to calculate its magnitude, and both its exact mathematical formulation and standard decimal representations.
IEEE 754 Single-Precision Format
In the IEEE 754 standard, a 32-bit single-precision binary floating-point value is divided into three distinct components:
- Sign bit (\(S\)): 1 bit (0 for positive, 1 for negative)
- Exponent field (\(E\)): 8 bits (with an exponent bias of 127)
- Fraction/Mantissa (\(M\)): 23 bits
For a number to be considered normalized, the exponent field cannot be all zeros (which is reserved for subnormal numbers and zero) or all ones (which is reserved for infinities and NaN).
Derivation of the Smallest Normalized Float
To determine the smallest positive normalized float:
- Sign bit: Set to
0for a positive number. - Exponent: The minimum non-zero exponent field value
is \(E = 1\) (in binary:
00000001). Subtracting the bias yields an effective exponent of \(1 - 127 = -126\). - Mantissa: Normalized numbers have an implicit
leading bit of
1. To minimize the value, all 23 explicit fraction bits are set to0.
The binary representation is:
0 00000001 00000000000000000000000
In hexadecimal, this is represented as 0x00800000.
Mathematical and Exact Decimal Value
The mathematical value of this binary configuration is:
\[\text{Value} = 1.0 \times 2^{-126} = 2^{-126}\]
Because \(2^{-126} = \frac{5^{126}}{10^{126}}\), it terminates into an exact finite decimal.
Standard Decimal Approximations
- Standard scientific notation: \(\approx 1.1754943508222875 \times 10^{-38}\)
- Single-precision float representation: \(\approx 1.1754944 \times 10^{-38}\) (known
as
FLT_MINin C/C++)
Exact Full Decimal Expansion
The complete, unrounded decimal value is:
\[0.\underbrace{0000000000000000000000000000000000000}_{37\text{ zeros}}11754943508222875079687365372222456778186655567724734125740068424659970863720703125\]