4-14 Vol. 1
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-precision 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 numbers.
The use of leading zeros with denormalized numbers allows smaller numbers to be represented. However, this
denormalization may cause a loss of precision (the number of significant bits 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 conditions 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
Figure 4-12. Real Numbers and NaNs
1
0
S
E
Sig
1
− 0
1
0
− Denormalized
Finite
NaN
1 1...254
− Normalized
Finite
1
255
−
∞
255
SNaN
255
QNaN
NOTES:
3. Sign bit ignored.
2. Fraction must be non-zero.
0
0
S
E
Sig
1
0
0
NaN
0 1...254
0
255
X
3
255
1.0XX...
2
255
1.1XX...
+ 0
+Denormalized
Finite
+Normalized
Finite
+ ∞
SNaN
QNaN X
3
X
3
X
3
Real Number and NaN Encodings For 32-Bit Floating-Point Format
− Denormalized Finite
−
Normalized Finite
− 0
−
∞
+
∞
+ Denormalized Finite
+ Normalized Finite
+ 0
0.XXX...
2
0.000...
1.000...
1.XXX...
1.000...
0.000...
0.XXX...
2
1.XXX...
1.0XX...
2
1.1XX...
1. Integer bit of fraction implied for
single-precision floating-point format.