Vaste komma versus drijvende komma: bereik, precisie en hardware
Bij vaste komma ligt de plaats van de komma vooraf vast en worden breuken verwerkt met dezelfde bitreeksen en rekeneenheden als gehele getallen. De schakeling is klein en zuinig, dus wordt vaste komma gebruikt in DSP's, in microcontrollers zonder drijvendekommaeenheid en voor integerberekeningen bij AI-inferentie. Drijvende komma stelt een getal voor met teken, exponent en mantisse en verschuift de komma via de exponent, zodat een zeer breed bereik met een vrijwel constante relatieve precisie kan worden verwerkt. De rekeneenheden zijn groter, maar omdat je je niet om het uitlijnen van posities hoeft te bekommeren, is drijvende komma de standaard voor algemeen rekenwerk en AI-training.
| Kenmerk | Vaste komma | Drijvende komma |
|---|---|---|
| Representatie | Een integer-bitreeks die wordt gelezen met een vooraf vastgelegde schaal (2 tot de macht −n). Genoteerd als bijvoorbeeld Q15 | Drie delen, teken, exponent en mantisse: (−1)^teken × 1,mantisse × 2^(exponent − bias). Vastgelegd in IEEE 754 |
| Bereik (voorbeeld) | Q15 (16 bit): −1 tot 1 − 2⁻¹⁵ | Enkele precisie (32 bit): ongeveer 10⁻³⁸ tot 10³⁸. Met subnormale getallen nog dichter bij 0 |
| Precisie | Constante stapgrootte (constante absolute fout). Hoe kleiner de waarde, hoe groter de relatieve fout | Vrijwel constante relatieve precisie (ongeveer 7 cijfers bij enkele precisie). Hoe groter de waarde, hoe groter de stap |
| Rekeneenheid | Gewone integeropteller en -vermenigvuldiger | Schakelingen nodig voor het vergelijken van exponenten, uitlijnen van mantissen, normaliseren en afronden |
| Omvang en vermogen van de schakeling | Klein. Bij dezelfde bitbreedte veel minder dan drijvende komma | Groot. Vaak meerdere keren meer oppervlak en energie dan een integereenheid met dezelfde bitbreedte |
| Omgang met overflow | Bij two's complement slaat de waarde om naar de andere kant. Voorkomen met verzadigende rekenkunde of accumulatoren met extra bits (guard bits) | Boven de grootste representeerbare waarde wordt het resultaat ±oneindig. 0 ÷ 0 en dergelijke geven NaN |
| Schaling | De programmeur schat het waardebereik en ontwerpt de verschuivingen en kommaposities bij elke bewerking | De exponent past zich automatisch aan, dus er hoeft nauwelijks over te worden nagedacht |
| Reproduceerbaarheid van resultaten | Resultaten zijn gemakkelijk bit voor bit gelijk | De volgorde van optellen verandert het resultaat licht (de associatieve eigenschap geldt niet) |
| Waar gebruikt | DSP's, kleine microcontrollers zonder drijvendekommaeenheid, signaalverwerking in FPGA's en ASIC's, integerberekeningen bij AI-inferentie (zoals INT8) | Algemeen rekenwerk op pc's en servers, wetenschappelijk rekenwerk (dubbele precisie), graphics, AI-training (FP32, BF16, FP16, FP8) |
De getalswaarden zijn typische ordegroottes en variëren per procesgeneratie en product.