Intel 64 and IA-32 Architectures Software Developers Manual Volume 1, Basic Architecture

Vol. 1 4-19
DATA TYPES
An IA-32 processor can operate on and/or return any of these values, depending on
the type of computation being performed. The following sections describe these
number and non-number classes.
4.8.3.1 Signed Zeros
Zero can be represented as a +0 or a 0 depending on the sign bit. Both encodings
are equal in value. The sign of a zero result depends on the operation being
performed and the rounding mode being used. Signed zeros have been provided to
aid in implementing interval arithmetic. The sign of a zero may indicate the direction
from which underflow occurred, or it may indicate the sign of an that has been
reciprocated.
4.8.3.2 Normalized and Denormalized Finite Numbers
Non-zero, finite numbers are divided into two classes: normalized and denormalized.
The normalized finite numbers comprise all the non-zero finite values that can be
encoded in a normalized real number format between zero and . In the single-preci-
sion floating-point format shown in Figure 4-12, this group of numbers includes all
the numbers with biased exponents ranging from 1 to 254
10
(unbiased, the exponent
range is from 126
10
to +127
10
).
When floating-point numbers become very close to zero, the normalized-number
format can no longer be used to represent the numbers. This is because the range of
the exponent is not large enough to compensate for shifting the binary point to the
right to eliminate leading zeros.
When the biased exponent is zero, smaller numbers can only be represented by
making the integer bit (and perhaps other leading bits) of the significand zero. The
numbers in this range are called denormalized (or tiny) numbers. The use of
leading zeros with denormalized numbers allows smaller numbers to be represented.
However, this denormalization causes a loss of precision (the number of significant
bits in the fraction is reduced by the leading zeros).
When performing normalized floating-point computations, an IA-32 processor
normally operates on normalized numbers and produces normalized numbers as
results. Denormalized numbers represent an underflow condition. The exact condi-
tions are specified in Section 4.9.1.5, “Numeric Underflow Exception (#U).
A denormalized number is computed through a technique called gradual underflow.
Table 4-6 gives an example of gradual underflow in the denormalization process.
Here the single-precision format is being used, so the minimum exponent (unbiased)
is 126
10
. The true result in this example requires an exponent of 129
10
in order to
have a normalized number. Since 129
10
is beyond the allowable exponent range,
the result is denormalized by inserting leading zeros until the minimum exponent of
126
10
is reached.