6.6.3.2 Subnormal Number
A subnormal number (denormal number) is a non-zero floating-point number with a magnitude of less than that of the smallest normal number representable in the given format. The benefit of subnormal numbers is that they allow for gradual underflow when a result is very small (when compared to that without subnormal numbers). The IEEE 754 standard represents subnormal numbers as a special case.
Using Single Precision data format as an example, the smallest normal numbers around 0 are greater than +2-126 or less than -2-126, which occur when the floating-point number exponent is 1 (bearing in mind that the 8-bit exponent is defined with a bias of +127) and the mantissa is all 0’s.
The exponent value of 0 is reserved for subnormal numbers. However, the IEEE 754 standard treats subnormal numbers as a special case where the hidden mantissa bit becomes 0 and the exponent bias is changed (by +1) to compensate, such that the datum exponent becomes -126. This allows the subnormal range to surround 0 and be between a little greater than -2-126 to a little less than -2-126. That is:
-2-126 < subnormal < +2-126
The minimum exponent value is referred to as Emin, and is -126 for Single Precision and -1023 for Double Precision formats. A subnormal number would therefore be represented as:
(-1)S x [0].m base2 x 2Emin
where:
-‘S’ indicates the sign of the number (same values as a signed integer value)
-‘m’ represents the fractional mantissa value
For example, the largest SP positive subnormal number will be when all mantissa bits are all set (0x007F_FFFF), and the smallest number will be when all mantissa bits are all clear (0x0000_0000), which is 0.0.