User Guide
x87 Floating-Point Programming 251
24592—Rev. 3.15—November 2009 AMD64 Technology
Floating-Point Data Types. The floating-point data types, shown in Figure 6-8 on page 251, include
32-bit single precision, 64-bit double precision, and 80-bit double-extended precision. The default
precision is double-extended precision, and all operands loaded into registers are converted into
double-extended precision format.
All three floating-point formats are compatible with the IEEE Standard for Binary Floating-Point
Arithmetic (ANSI/IEEE Std 754 and 854).
Figure 6-8. x87 Floating-Point Data Types
All of the floating-point data types consist of a sign (0 = positive, 1 = negative), a biased exponent
(base-2), and a significand, which represents the integer and fractional parts of the number. The integer
bit (also called the J bit) is either implied (called a hidden integer bit) or explicit, depending on the data
type. The value of an implied integer bit can be inferred from number encodings, as described in
“Number Encodings” on page 256. The bias of the exponent is a constant which makes the exponent
always positive and allows reciprocation, without overflow, of the smallest normalized number
representable by that data type.
Specifically, the data types are formatted as follows:
• Single-Precision Format—This format includes a 1-bit sign, an 8-bit biased exponent whose value
is 127, and a 23-bit significand. The integer bit is implied, making a total of 24 bits in the
significand.
063
Double Precision
31 0
Single Precision
079
22
S
Biased
Exponent
78
23
S
Biased
Exponent
6364
5152
Biased
Exponent
S
Fraction
30
62
Double-Extended Precision
S = Sign Bit
S = Sign Bit
S = Sign Bit
I
62
I = Integer Bit
Significand
(also Fraction)
Significand
Significand
(also Fraction)