Ok, iedereen heeft een beetje gelijk
Floating point getallen worden normaal gesproken in genormaliseerd formaat opgeslagen. Voor 32 bit zal dit iets zijn als:
24 bits Mantissa (bits 0 t/m 22), 8 bits Exponent (bits 23 t/m 30), 1 bits Sign (bit 31).
Merk op dat de 24 bits Mantissa opgeslagen wordt in 23 bits.
Om tot de genormaliseerde vorm te komen wordt de komma verschoven (waarbij steeds de exponent aangepast wordt om de juiste waarde van het getal te handhaven) tot er slechts een cijfer groter dan nul voor de komma staat.
In het tweetallig stelsel is het toevallig zo dat er maar een cijfer groter dan nul bestaat, namelijk 1. Daarom hoeft deze 1 van de Mantissa niet opgeslagen te worden, omdat hij toch altijd 1 is (hence, 23 bits vs 24 bits).
Wat meerder mensen opgemerkt hebben, zoals Rataplan boven mij, kun je met een Mantissa groter of gelijk aan 1 nooit exact 0 representeren, wat je ook in de Exponent of de Sign stopt.
Maar hier komt de truc, zoals Soultaker al opmerkte: De IEEE standaarden houden enkele representaties gereserveerd voor speciale waarden, namelijk alle representaties waarbij de Exponent uit alleen maar 0-en of alleen maar 1-en bestaat.
De speciale waarde waar het ons om gaat is 0, deze wordt gerepresenteerd door een Exponent van alleen maar 0-en en een Mantissa van alleen maar 0-en (wat er dus voor zorgt dat we zelfs twee manieren hebben om precies 0 op te slaan: -0 en +0).
Blijft natuurlijk wel het feit dat er veel andere getallen zijn die niet exact te representeren zijn in een IEEE floating point, dus verder blijven de argumenten overeind.