The so-called "hidden bit" refers to omitting an explict binary
leading 1 before the "mantissa" of an IEEE floating point number. In
radix 2 every nonzero number has a leading "1-bit", so why waste
precious space representing it each time?
The price is that some special representation for zero must be agreed
upon, since zero alone of all numbers would lack an "implied" leading
1. Typically this is done by setting the biased exponent to zero as
well, so that the representation of floating point zero is
conveniently all zeroes. This design choice overlaps with the
optional representation of "denormalized" numbers at the lowest
possible exponent, so that underflow at this extreme can be "gradual".
Which leads us to the second part of the original Question, about the
significance of the "bias" in representing the exponent of the number.
The IEEE floating point standard mandates certain aspects of
representing real numbers (and potentially some other NaN/"Not a
Number" entities, like +oo and -oo). For "normalized" (nonzero) real
numbers we should have a binary mantissa and a binary exponent C, and
a sign for each of these:
± (1).bbbbbbbbb... * 2^ ±C
One can think of the sign bit as replacing the implied leading 1 or
"hidden bit" here suggested by putting parentheses around it.
The "biased" exponent means that it is represented as a nonnegative
integer with an implied negative offset, corresponding to the lowest
possible (negative) exponent. This chosen "bias" allows us to split
the range of power-of-2 exponents across the positive and negative
range of exponents.
regards, mathtalk-ga |