Section 21.6
Normalized, Unnormalized and Denormalized numbers

In our notation that we have been using, it is possible to store a digit pattern that has 0's between the decimal point and the first non-zero digit. For example,

          0.00065 x 108

While this violates the rules of scientific notation, it is still a valid bit pattern and can be useful at times. Such a floating point number, where the first digit after the decimal point is 0, is called unnormalized.

By contrast, a normalized floating point number always has a non-zero digit after the decimal point. This permits the most accuracy in the mantissa, since all five digit places are used for the fraction and help to encode the most information. Most computers store the results of arithmetic computations in normalized form.

However, it takes time to normalize a number. For example,

     0.30000 x 108     multiplied by    0.20000 x 106

gives an answer of 0.06000×1014, which is not normalized. Logic circuitry notices this and shifts the mantissa to the left while subtracting 1 from the exponent to get the normalized answer: 0.60000×1013. But this takes more time. Some hardware has separate instructions that allow you to choose to normalize after the arithmetic has occurred, or to not normalize at all.

There is a time when normalization is undesirable. Suppose you get 0.06000 x 10-50 as the result of your computation, and -50 is the smallest exponent you can store. Indeed, in our excess-50 notation that we used earlier in this chapter, the value would be 00600000 which is +0.06000×1000. If we tried to normalize this by shifting the mantissa left and subtracting 1 from the exponent, we would get overflow. Yet 0.06000×10-50 is a valid real number, and can be stored by our floating point system, just not in normalized form.

Many systems allow you to store these kinds of numbers, where the mantissa has 1 or more leading 0s and the exponent is the minimum possible. These are called denormalized numbers, and are the smallest real numbers our system can represent. Fig. 21.6.1 redraws the real number line, showing where denormalized numbers fit. They can be both positive and negative, so there are two regions of them.


Fig. 21.6.1: Where denormalized numbers fit into the representable ranges
Only the white space around 0 is non-representable