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?
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:
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 oneB
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.
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.
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 derivedB
is 1 for positive numbers and 0 for negative ones. Yes, forcingB
to 1 is a bad design choice and neither it is required.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?
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.