IEEE floating point encodings on the Intel architecture

In each floating point format, several classes of floating point "numbers" are supported. The [exponent] is used to to differentiate the different "numbers".

Most "numbers" are normalised numbers.

Two values of the [exponent] are reserved to allow the representation of special "numbers". The reserved exponents have bits which are all '1's, or all '0's. The special "numbers" are:


Normalised numbers

A number with any exponent except the two reserved cases (all '1's, and all '0's) represents a normalised number. The exception is the extended precision numbers which must also have a '1' in the most significant bit of the significand.

Single precision example (-0.1):

      [sign] [exponent] [significand]
       1 bit   8 bits      23 bits
        1     01111011   10011001100110011001101

Zeroes

A zero has '0's in all bits of the exponent and all bits of the significand. The sign may be '0' (for +0.0) or '1' (for -0.0).

Single precision example (+0.0):

      [sign] [exponent] [significand]
       1 bit   8 bits      23 bits
        0     00000000   00000000000000000000000

Infinities

An infinity has '1's in all bits of the exponent and '0's in all bits of the significand. The sign bit may be '0' (for +infinity), or '1' (for -infinity). The exception is an extended precision infinity, which has a '1' in the most significant bit of the significand.

Single precision example (+infinity):

      [sign] [exponent] [significand]
       1 bit   8 bits      23 bits
        0     11111111   00000000000000000000000

NaNs

A NaN (Not a Number) has '1's in all bits of the exponent but is not an infinity. (An extended precision NaN has a '1' in the most significant bit of the significand).

Single precision example:

      [sign] [exponent] [significand]
       1 bit   8 bits      23 bits
        0     11111111   10000000000000000000000

Denormals

A denormal has '0's in all bits of the exponent but is not a zero. (In addition, an extended precision denormal has a '0' in the most significant bit of the significand).

Single precision example (+5.87747e-39):

      [sign] [exponent] [significand]
       1 bit   8 bits      23 bits
        0     00000000   10000000000000000000000

Denormals

There is a lower limit and an upper limit to the values which can be represented by a normalised encoding in a given format. Denormals represent numbers smaller than the value of the smallest normalised number (the values represented by denormals in the extended precision format