background image

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.