Tue, 8 Oct 2013, 11:11

A student writes:

> Hi Dr. Patt/TAs,
> Yesterday in the review section, we discussed a floating point data type
> question. For 32 bits, I know the representation is 1 bit for sign, 8 bits
> for range, and 23 bits for precision. Likewise, the 64 bit representation
> is 1 sign bit, 11 exponent bits, 52 fraction bits.
> I was reading one of your earlier emails from Sept. 10th and you used a 10
> bit floating point data type: 1 sign bit, 4 exponent bits and 5 fraction
> bits. On the exam, if the floating point data type is NOT 32 or 64 bits,
> will you give us the number of exponent and fraction bits we must have? If
> not, is there a way to determine that for a 10 bit floating point you need
> 4 exponent bits and 5 fraction bits?
> Thanks.
> <<name withheld to protect one wanting to know how many bits to allocate>>

The real answer is it depends on the values you wish to represent *exactly*.
(Exactly means "with no rounding.")

The 10 bit floating point data type could have 4 exponent bits and 5 fraction
bits or 3 exponent bits and 6 fraction bits or 2 exponent bits and 7 fraction
bits, etc.  More fraction bits means more precision for each value represented.
More exponent bits means a larger range of values (bigger and tinier) that can 
be represented.  So, like so many things in our field, the answer is: 
It depends.

For example, you recall our first example: 6 5/8.  It is 110.101, and
normalized, it is 1.10101 x 2^(2).  Can you represent this number exactly
with 3 fraction bits?  How about 4?

Good luck tomorrow.