Vol. 1 4-11
DATA TYPES
The packed BCD integer indefinite encoding (FFFFC000000000000000H) is stored by the FBSTP instruction in
response to a masked floating-point invalid-operation exception. Attempting to load this value with the FBLD
instruction produces an undefined result.
4.8
REAL NUMBERS AND FLOATING-POINT FORMATS
This section describes how real numbers are represented in floating-point format in x87 FPU and
SSE/SSE2/SSE3/SSE4.1 and Intel AVX floating-point instructions. It also introduces terms such as normalized
numbers, denormalized numbers, biased exponents, signed zeros, and NaNs. Readers who are already familiar
with floating-point processing techniques and the IEEE Standard 754 for Binary Floating-Point Arithmetic may wish
to skip this section.
4.8.1
Real Number System
As shown in Figure 4-10, the real-number system comprises the continuum of real numbers from minus infinity (−
∞) to plus infinity (+ ∞).
Because the size and number of registers that any computer can have is limited, only a subset of the real-number
continuum can be used in real-number (floating-point) calculations. As shown at the bottom of Figure 4-10, the
subset of real numbers that the IA-32 architecture supports represents an approximation of the real number
system. The range and precision of this real-number subset is determined by the IEEE Standard 754 floating-point
formats.
4.8.2 Floating-Point
Format
To increase the speed and efficiency of real-number computations, computers and microprocessors typically repre-
sent real numbers in a binary floating-point format. In this format, a real number has three parts: a sign, a signif-
icand, and an exponent (see Figure 4-11).
The sign is a binary value that indicates whether the number is positive (0) or negative (1). The significand has
two parts: a 1-bit binary integer (also referred to as the J-bit) and a binary fraction. The integer-bit is often not
represented, but instead is an implied value. The exponent is a binary integer that represents the base-2 power by
which the significand is multiplied.
Table 4-5 shows how the real number 178.125 (in ordinary decimal format) is stored in IEEE Standard 754 floating-
point format. The table lists a progression of real number notations that leads to the single-precision, 32-bit
floating-point format. In this format, the significand is normalized (see Section 4.8.2.1, “Normalized Numbers”)
and the exponent is biased (see Section 4.8.2.2, “Biased Exponent”). For the single-precision floating-point
format, the biasing constant is +127.
Packed BCD
Integer
Indefinite
1
1111111
1111
1111
1100
0000
...
0000
←
1 byte
→
←
9 bytes
→
Table 4-4. Packed Decimal Integer Encodings (Contd.)