Can a floating Point System with 2's or 1's Complements Mantissa be Normalized?

608 Views Asked by At

As I understand a normalized mantissa is a fractional mantissa in which it's more significant bit, the one that equals 1/2, is always 1. And this is done in order to avoid repeated representations of the same number on the system.

But what happens if the Mantissa uses a 2's Complement or 1's Complement system. In that case, if the number is negative forcing that bit to 1 would cause that bit to have a null-value making it to not fulfill its purpose. The other solution would be to force it to be a 0 in the case the number is negative but I imagine a physical implementation of that could get complicated. And that makes me think, does a system with a normalized 2's or 1's complement mantissa even exist? And if they exist how do they work?

1

There are 1 best solutions below

0
On

Can a floating Point System with 2's or 1's Complements Mantissa be Normalized?

Yes - all sort of encodings are possible. Many floating-point encodings have been tried - maybe even ones with a 2's or 1's Complements mantissa. Yet the floating point formats that are most popular contain a sign, a sign-less significand, and exponent.


To clear up some (mis-)understandings:

a normalized mantissa is a fractional mantissa in which it's more significant bit, the one that equals 1/2, is always 1

Note: better to use significand/significant than mantissa.

Floating point formats like binary64 make a distinction between the the value of the signifcand and it encoding.

The value of significand m is 53 bits - usually thought of as a binary number as B.bbb...bbb. The lower 52 are directly encoded. The most significant one B is derived. When the biased exponent is not 0, the most significant bit is 1 (normal numbers). Else it is 0 (sub-normal numbers).

The most significant bit of the value is not always 1. The most significant bit of the encoded 52 bits value is not always 1 either.

As normal numbers always have a most significant bit of 1, that bit is not encoded. It is usually thought of as having a value of 1 and not 1/2. 1/2 could be used though and then lots of other constants describing the format would need to be adjusted too.

And this is done in order to avoid repeated representations of the same number on the system.

Yes - but indirectly. A goal of a good floating point format is to encoded many different values with minimal space. Any repeated representations would reduce that efficiency. No or few repeated representations is a result of space efficiency goal.

But what happens if the Mantissa uses a 2's Complement or 1's Complement system. In that case, if the number is negative forcing that bit to 1 would cause that bit to have a null-value making it to not fulfill its purpose.

This is curious as the "mantissa", signicand is sign-less. Yet lets us combine the sign bit and signicand together as the sign-magnitude "mantissa" as is sB.bbb...bbb. Changing this to some sort of 54-bit 2's complement implies that the derived B is 1 for positive numbers and 0 for negative ones. Yes, forcing B to 1 is a bad design choice and neither it is required.

The other solution would be to force it to be a 0 in the case the number is negative but I imagine a physical implementation of that could get complicated.

Yes it would be 0 in the case of negative numbers for normal numbers. There is no overly complicated issues preventing a physical implementation - quite trivial really. Yet there is no demonstrated value for this alternative approach. If you had a stack of money to implement the next processor with great floating point ability - would you bet on the common sign-magnitude floating point formats or attempt a 2's complement one?

... does a system with a normalized 2's or 1's complement mantissa even exist?

As memory serves, this was implemented. Yet for minor or major reasons, common floating point formats today do not use a 2's complement significand. Darwinian technology pressure resulted in sign-magnitude floating point dominating the industry. The key events lead up to the issue of IEEE 754-1985. This detailed the many corners of floating point - yet also was written to reflect the leading hardware manufactures goals at the time. 2's or 1's complement mantissa along with many other floating point formats missed the boat.