
306
Chapter 6: x87 Floating-Point Programming
AMD 64-Bit Technology
24593—Rev. 3.09—September 2003
The leading non-zero digit is called the
integer bit
, and in the
x87 double-extended-precision floating-point format this
integer bit is explicit, as shown in Figure 6-8. In the x87 single-
precision and the double-precision floating-point formats, the
integer bit is simply omitted (and called the
hidden integer bit)
,
because its implied value is always 1 in a normalized
significand (0 in a denormalized significand), and the omission
allows an extra bit of precision.
The following sections describe the supported number
representations.
Normalized Numbers.
Normalized floating-point numbers are the
most frequent operands for x87 instructions. These are finite,
non-zero, positive or negative numbers in which the integer bit
is 1, the biased exponent is non-zero and non-maximum, and the
fraction is any representable value. Thus, the significand is
within the range of [1, 2). Whenever possible, the processor
represents a floating-point result as a normalized number.
Denormalized (Tiny) Numbers.
Denormalized numbers (also called
tiny
numbers) are smaller than the smallest representable
normalized numbers. They arise through an underflow
condition, when the exponent of a result lies below the
representable minimum exponent. These are finite, non-zero,
positive or negative numbers in which the integer bit is 0, the
biased exponent is 0, and the fraction is non-zero.
The processor generates a denormalized-operand exception
(DE) when an instruction uses a denormalized
source operand
.
The processor may generate an underflow exception (UE) when
an instruction produces a rounded, non-zero
result
that is too
small to be represented as a normalized floating-point number
in the destination format, and thus is represented as a
denormalized number. If a result, after rounding, is too small to
be represented as the minimum denormalized number, it is
represented as zero. (See “Exceptions” on page 337 for specific
details.)
Denormalization may correct the exponent by placing leading
zeros in the significand. This may cause a loss of precision,
because the number of significant bits in the fraction is reduced
by the leading zeros. In the single-precision floating-point
format, for example, normalized numbers have biased
exponents ranging from 1 to 254 (the unbiased exponent range