2
$\begingroup$

From Tanebaum's Structed Computer Organization.

Exercise 4 of Appendix B

The following binary floating-point number consist of a sign bit, an excess $64$, radix $2$ exponent, and a $16$-bit fraction. Normalize $0$ $1000000$ $0001010100000001$ ($\star$).

As far as I've studied, the number ($\star$) is already normalized and it is a representation of the number $1.0001010100000001 \times 2^0$.
Moreover, according to the IEEE754, if one is meant to represent an unnormalized number, she would have to set the exponent-related bits at $0$ --which is not the case.

My question is: what is the exercise asking to me? Can that be an unormalized number?

Maybe Tanebaum's simply asking the reader to multiply ($\star$) by $2^3$ then to subtract $3$ from the exponent. Yet to me, that has no sense at all --instead, you're really changing the value ...

$\endgroup$
  • $\begingroup$ The question doesn't say there's a hidden bit, so it is $0.0001010100000001 \times 2^0$. $\endgroup$ – Wandering Logic Oct 13 '13 at 13:42
  • $\begingroup$ uhm ...in fact in other exercise Tanebaum's precise about he's meaning IEEE format. $\endgroup$ – Giuseppe Crinò Oct 13 '13 at 13:48
  • $\begingroup$ This can't be an IEEE 754 format: it's 24 bits. $\endgroup$ – Wandering Logic Oct 13 '13 at 14:39
1
$\begingroup$

I had to re-read your question a few times to have an opinion. The question states that there exists a sign, an excess 64 exponent, and a 16-bit mantissa. It then asks you to normalize a given bit pattern. It's my opinion that you are supposed to make some inferences.

First off, an excess 64 suggests that you have a 7-bit mantissa. (It's not certain as one technically could have an excess 64 applied to an 8-bit or even a 9-bit mantissa, but those are all highly unlikely in normal circumstances.) This appears to be confirmed in the sense that they supply what appears to be one bit, followed by 7 bits, followed by 16 bits.

Second, you are being asked to normalize a value. This is commonly asked by providing you with the signed number and a positioned radix, leaving you to figure out the sign, exponent, and mantissa. But in this case, their question must be taken to imply that they are giving you a denormalized value. So I believe they want you to accept the last 16 bits just as it is given to you and to do the necessary shifting to put it back into a properly normalized form. And I therefore think they want you to accept the given exponent as a starting point that you assume is correct for the given value.

This leads to the third problem. You inserted a hidden bit on your own, on the assumption that the denormalized value carries a hidden bit. But denormalized values, even in FP formats supporting hidden bits (and not all do that) do not have an implied hidden bit. So I wonder why you inserted one on your own, writing "$1.0001010100000001\times 2^0$." If you were right about that, then why in the world would they now ask you to normalize it?? It doesn't make any sense, neither in the format of the question nor in actual experience with common cases. So I think here you must assume the opposite... that the 16 bit mantissa they gave you is instead just a pure 16-bit integer that has not been normalized and doesn't imply a hidden bit. Otherwise, what could they possibly be asking you to do?

That said, I haven't worked from your book. So I don't know the context here. You will have to use your own judgment about what I write here and see if you think I might be right about it.

If I am right, then you are being told $sign=0$, $exponent=0$ as it is in excess 64, and $value=5377$ (decimal.) And you are then asked to normalize it and create a proper 24-bit FP formatted value. Since you mentioned IEEE754, which uses hidden bit notation, I'd assume that this novel 24-bit FP format also uses hidden bit notation. I wish I had your book, as that would help to gain context, but I get something like the following: $0 \,\, 1001100 \,\,\, 0101000000010000$

$\endgroup$
0
$\begingroup$

No, according to IEEE754 any number where the exponent $\ne$ 0 cannot be a denormalized number.

A denormal number is represented with a biased exponent of all 0 bits.

IEEE754 allows denormalized numbers in order to allow gradual underflow.
This comes at a price of decreased range. The exponent -126 would have been represented by all zeros (for single precision) has been sacrificed to express denormal numbers instead.

If other exponents would be sacrificed as well (e.g. to enable gradual overflow to infinity) the range would decrease further. IEEE754 opted not to allow this and for this reason denormal numbers in IEEE754 have a zero exponent by definition.

$\endgroup$
0
$\begingroup$

For 32 and 64 bit floating point, there is always an implicit leading 1 bit in the mantissa unless the exponent is zero. With a zero exponent, the implicit leading bit is zero. All the mantissa bits actually have the same value as if the exponents were 1.

For 80 bit extended precision floating point, the full 64 bit of the mantissa is stored, including the leading bit. If the exponent is not zero, the leading bit of the mantissa should be 1. A number with a non-zero exponent and a zero as the highest bit of the mantissa is called "unnormalised". The result of any arithmetic operation is never an unnormalised number, and it depends on the processor how exactly unnormalised (not denormalised) numbers are treated.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.