A floating-point format is characterized by the precision with which representable numbers are differentiated, and the the number of bits allocated to the exponent, determining the range of representable numbers. Some formats represent all bits of a number's significand explicitly, but a common optimization is to omit the integer bit. Thus, a format is defined as a triple:
(a) is a boolean value indicating whether the integer bit is explicitly represented; the format is said to be explicit or implicit accordingly;
(b) is an integer, , the precision of ;
(c) is an integer, , the exponent width of .
In this chapter, every “format” will be understood to be a floating-point format.
The most common implicit formats are the IEEE basic single (, ) and double precision (, ) formats, at least one of which must be implemented by any IEEE-compliant floating-point unit. Explicit formats include most implementations of the single extended (, ) and double extended (, ) formats, as well as the higher-precision formats that are typically used for internal computations in floating-point units.
We establish the following notation for the three formats that are used by the x86 elementary arithmetic operations discussed in Part III:
The sign, exponent, and significand fields of an encoding are defined as illustrated in Figures 5.1 and 5.2. We also define the mantissa field as the significand field without the integer bit, if present:
The encodings for a given format are partitioned into several classes determined primarily by the exponent field, as described in the next three sections.
David Russinoff 2017-08-01