Within the 8 bits of the exponent the total number of values possible

are as follows:

28 = 256

If unsigned numbers were to be stored in the exponent they would range

from (as shown in the right)

0, 1, 2… 127, 128… 255

But, the exponent can be negative or positive. In that case the signed

range that can be contained within the exponent would be as shown on the right.

-127, -126, -125… -0, +0, 1, 2… 128

negative numbers positive numbers

As it can been seen from above there are two 0s, one negative, one positive. So

to solve this problem of the extra, redundant 0, the numbers from the signed range

below (negative and positive) are mapped to unsigned range above as shown by

the red arrows (as displayed in the two ranges below)

0, 1, 2… 127 128, 129… 255

The left range maps to all values from -127 to -1 and 0 (128 numbers),

the right range maps to all values from 1 to 128 (127 numbers). However, in IEEE

754, the minimum exponent of

-127 (where every bit is equal to 0) and +128 (all 1s) are reserved for special

values such as

+- ? (Infinity), denormalized numbers and NaNs (Not a

Number). Hence, the actual exponent range is -126… 127 where -126 is stored

as 1 and 0 is stored as 127. It allows every number from -127 to 127 to be

uniquely mapped from 0-254 and avoids mapping the 0 twice. This implies that

the exponent of 0 is stored with a bias of 127 (0 + 127), the exponent of -126

is stored as 1 (-126 + 127), the exponent of 127 is stored as 254 (127 + 127),

and so on.

Biasing is essential since exponents have to be signed values in order

to represent values ranging from very small to very large. However, it might

become difficult to compare two or more values due to two’s complement (how signed

values are usually represented). This is why in order to store the exponent in

8 bits, a bias of +127 is added to the base 10 exponent and then it is converted

into a base 2 representation (8-bits) (e.g., an exponent of 4 is adjusted with

a bias of 127 to become 131(10) which is then converted into an

8-bit IEEE 754 single precision representation as 1000 0011(2)).