Wat is Vaste komma (fixed-point)?

Methode waarbij de positie van de komma vooraf is vastgelegd en breuken met dezelfde bitreeksen als gehele getallen worden weergegeven. Berekening met gehele-getalcircuits, klein circuit en laag vermogen, maar beperkt bereik. Soms uitgedrukt met het aantal fractiebits, zoals Q15.

Japanse benaming: 固定小数点

“Vaste komma (fixed-point)” komt voor in 3 oefenvragen uit 1 onderwerpen, bijv. Computerarithmetiek.

Vakgebied: Computerarithmetiek

Hoe een vastekommagetal is opgeslagen

Een vastekommagetal (fixed-point) is een gewoon geheel getal waarvan de programmeur afspreekt dat het door een vaste macht van twee wordt gedeeld. Bij 8 bits met 4 fractiebits leest het patroon 0011 1000 als het gehele getal 56, en delen door 2⁴ = 16 geeft 3,5: de bovenste bits vormen het gehele deel en het eerste fractiebit heeft een gewicht van 0,5. De Q-notatie benoemt het formaat: Q15 is een 16-bit getal met teken en 15 fractiebits, dat het bereik van −1 tot net onder +1 dekt met een stapgrootte van 2⁻¹⁵, ongeveer 3,05 × 10⁻⁵. Qm.n geeft het aantal integer- en fractiebits expliciet aan.

Rekenregels

Twee getallen in hetzelfde formaat kun je optellen met een gewone integer-opteller, omdat hun binaire komma's al op één lijn liggen. Bij vermenigvuldigen verdubbelt het aantal fractiebits: twee Q15-waarden geven een 32-bit product met 30 fractiebits, dat 15 posities naar rechts wordt geschoven om terug te komen in Q15, zo nodig met afronding. Overflow is het grootste gevaar. Gewone integer-hardware loopt rond (wrap-around), waardoor een groot positief resultaat negatief wordt; DSP's bieden daarom verzadigende rekenkunde (saturation) die het resultaat begrenst op de grootste representeerbare waarde. In Q15 geeft zelfs −1 × −1 overflow, omdat +1 niet representeerbaar is.

Waarom hardware het gebruikt

Omdat de inhoud gewoon uit gehele getallen bestaat, heeft vaste komma geen exponentuitlijning, normalisatie of afhandeling van speciale waarden nodig, die floating-point-eenheden juist groter en energieslurpender maken. Integer-vermenigvuldigers en -optellers zijn klein en snel. Dat past bij goedkope microcontrollers zonder floating-point-eenheid, bij DSP's voor signaalbewerking en bij custom datapaden op FPGA's en ASIC's, waar de ontwerper precies zoveel bits kan kiezen als het algoritme nodig heeft. De prijs is ontwerpinspanning: elke tussenwaarde moet zo geschaald worden dat ze niet overloopt en niet te veel precisie verliest.

Vaste komma vs. drijvende komma

Vastekommawaarden liggen op gelijke afstanden, zodat de absolute precisie overal gelijk is, maar het bereik is smal. Drijvende komma (floating point) slaat een significand en een exponent op, zodat de afstand verdubbelt telkens als de exponent met één stijgt: in single precision is het verschil tussen buurwaarden ongeveer 1,2 × 10⁻⁷ rond 1, maar 8 rond 100 miljoen. Floating point houdt de relatieve precisie dus ongeveer constant over een enorm bereik. Beide formaten hebben afrondingsfouten; het verschil is dat vaste komma bereik inruilt voor eenvoudige hardware en een voorspelbare, uniforme resolutie.

Nu oefenen: vragen over Vaste komma (fixed-point)

Welke combinatie van drie onderdelen vormt een IEEE 754-drijvendekommagetal?

  1. ATeken, exponent, mantisse
  2. BGeheel deel, fractioneel deel, overdracht
  3. CHoogste byte, laagste byte, pariteit
Antwoord en toelichting tonen

Antwoord: A. Teken, exponent, mantisse

Een drijvendekommagetal drukt een waarde uit als (−1)^teken × 1.mantisse × 2^exponent en legt dit vast in drie delen: een tekenbit voor positief of negatief, een exponent die aangeeft met welke macht van 2 wordt vermenigvuldigd, en een mantisse voor de significante cijfers. Omdat de exponent de komma verschuift, kunnen met hetzelfde aantal bits zowel zeer kleine als zeer grote getallen worden weergegeven. De indeling in een geheel en een fractioneel deel is het principe van vaste komma; pariteit is een bit voor foutdetectie.

Wat is de belangrijkste reden dat in kleine microcontrollers en DSP's vaak vastekommabewerkingen in plaats van drijvendekommabewerkingen worden gebruikt?

  1. AEr kan met schakelingen voor gehele getallen worden gerekend, zodat de schakeling klein is en weinig vermogen verbruikt
  2. BVaste komma kan altijd een breder bereik weergeven dan drijvende komma
  3. CBij vaste komma treden helemaal geen afrondfouten op
Antwoord en toelichting tonen

Antwoord: A. Er kan met schakelingen voor gehele getallen worden gerekend, zodat de schakeling klein is en weinig vermogen verbruikt

Bij vaste komma ligt alleen de positie van de komma vast en is de inhoud een geheel getal, zodat optellen en vermenigvuldigen met schakelingen voor gehele getallen kan gebeuren. Schakelingen om exponenten gelijk te trekken en te normaliseren, zoals in een drijvendekommaeenheid, zijn niet nodig, dus het chipoppervlak en het vermogensverbruik blijven beperkt; daarom is vaste komma geliefd in goedkope microcontrollers en DSP's voor signaalverwerking. Daar staat tegenover dat het weer te geven bereik smal is en het ontwerp moet letten op overflow en onvoldoende precisie. Drijvende komma heeft het bredere bereik en ook bij vaste komma treden afrondfouten op.

Veelgestelde vragen

Wat betekent Q15 bij vastekommarekenen?

Q15 is een 16-bit vastekommaformaat met teken, met 15 fractiebits en één tekenbit. Het representeert waarden van −1 tot 1 − 2⁻¹⁵ in stappen van ongeveer 3,05 × 10⁻⁵.

Hoe zet je een vastekommawaarde om naar een decimaal getal?

Lees het bitpatroon als geheel getal en deel door 2 tot de macht van het aantal fractiebits. Zo is 0011 1000 met 4 fractiebits gelijk aan 56 ÷ 16 = 3,5.

Wat is het verschil tussen vaste komma en drijvende komma?

Vaste komma gebruikt een binaire komma op een afgesproken, vaste positie, wat gelijkmatige stappen en eenvoudige integer-hardware oplevert, maar een smal bereik. Drijvende komma voegt een exponent toe, wat een groot bereik met ongeveer constante relatieve precisie geeft, ten koste van complexere hardware.

“Vaste komma (fixed-point)” in de toelichting

Vragen met “Vaste komma (fixed-point)” (3)

  1. Welke combinatie van drie onderdelen vormt een IEEE 754-drijvendekommagetal?
  2. Wat is de belangrijkste reden dat in kleine microcontrollers en DSP's vaak vastekommabewerkingen in plaats van drijvendekommabewerkingen worden gebruikt?
  3. Welke uitspraak over de afstand tussen naburige weer te geven waarden van drijvendekommagetallen is juist?

Verwante termen

Mantisse (significand) Exponent IEEE 754 Afronden naar even (round to nearest even) bfloat16 Booth-algoritme Cancellation (verlies van significantie) Carry-lookahead-opteller Carry-save-opteller (CSA) FMA (fused multiply-add)

Naar de woordenlijst