Floating point nummer: wat is het? Eenvoudig uitgelegd met voorbeelden
In deze praktische tip laten we u zien wat een floating point-nummer is en hoe het verschilt van een fixed point-nummer.
Floating point nummer: wat is het?
In de informatica wordt het drijvende-kommagetal vaak gebruikt voor meetapparatuur die verondersteld wordt met een bepaalde nauwkeurigheid te werken.
- Een drijvend punt nummer (of "drijvend punt nummer") is een weergave van een nummer met behulp van exponentiële notatie. In uitzonderlijke gevallen werkt dit slechts ongeveer. U kunt ook het nummer 1230000 vertegenwoordigen met het nummer 1, 23 ⋅ 10⁶.
- De 1.23 wordt "Mantissa" genoemd. De 10 is de "basis" en de 6 is de "exponent". Overigens kan ook een bord aan de mantisse worden toegevoegd. U kunt echter ook alles op het dubbele systeem toepassen. U kunt ook het nummer 10101100 vertegenwoordigen met het nummer 1.0101100 ⋅ 2⁷. De computer slaat alleen het teken, de mantisse en de exponent op.
- Computers verplaatsen de komma meestal heen en weer totdat er slechts een 1 voor de komma staat. Dan hoeft de pc alleen de decimalen van de mantisse en de exponent op te slaan.
- Zodat de exponent kan worden opgeslagen als een positief getal, wordt een vast getal, de zogenaamde bias, toegevoegd. De kleinst mogelijke exponent van de plaats vóór de decimale punt (- bias) wordt opgeslagen als 0.
- In tegenstelling tot het vaste-puntnummer bevindt de komma zich niet op een vast punt in een zwevend-puntnummer.
Half, Float & Double - Gemeenschappelijke codering van zwevende kommagetallen
Je bent deze drie termen zeker tegengekomen, vooral als je met Arduino programmeert. Dit zijn gestandaardiseerde weergaven.
- Het gegevenstype "half" is een 16-bits getal. Het meest linkse bit is verantwoordelijk voor het teken. De exponent heeft 5 bits en de mantisse 10. De gebruikte voorspanning is 15. Omdat het eerste deel van de mantisse (bijna) altijd 1 is, wordt dit niet opgeslagen.
- Het gegevenstype "float" (of "single") is een 32-bits getal. Ook hier wordt een beetje gebruikt voor het bord. De exponent heeft echter 8 bits (bias = 127) en de mantisse 23.
- Het gegevenstype "dubbel" gebruikt ook een bit voor het teken. Hier heeft de exponent echter 11 bits (bias = 1023) en de mantisse zelfs 52 bits. In totaal is dit 64 bits, d.w.z. 8 bytes.
- Naast deze drie algemene gegevenstypen zijn er nog veel meer. Deze worden echter meestal niet gebruikt omdat de nauwkeurigheid van half, float en double al goed genoeg is.
Converteer decimale getallen naar drijvende-kommagetallen - hoe het werkt
Ten slotte willen we u laten zien hoe u een normaal decimaal getal kunt converteren naar een drijvende-kommagetal.
- In dit voorbeeld gebruiken we het decimale getal 18.4. Het nummer vóór de decimale punt wordt eerst overgedragen naar het dubbele systeem. Als resultaat moet u (10010) ₂ krijgen.
- Dan moet je de 0.4 converteren. Vermenigvuldig eerst de 0, 4 met 2. Je krijgt 0, 8 als resultaat. Noteer het nummer vóór de komma. In dit geval is het een 0. Vermenigvuldig vervolgens de 0.8 met 2. Deze keer krijg je 1.6 als resultaat. Noteer de 1 en ga door met rekenen met 0.6. Na een tijdje zult u merken dat het patroon zichzelf herhaalt (in dit voorbeeld). Noteer ten slotte alle getallen van boven naar beneden: 011001100110 ...
- Voeg vervolgens de nummers samen: Voeg ook (⋅ 2⁰) toe zodat u 10010.01100110 ... ⋅ 2⁰ krijgt. Verplaats vervolgens de komma totdat er slechts een 1 voor de komma staat en verander ook het vermogen op de juiste manier. Als resultaat moet u 1, 001001100110 ... ⋅ 2⁴ krijgen, omdat u de decimale punt 4 plaatsen naar links hebt verplaatst. Deze stap wordt ook "normaliseren" genoemd.
- In dit voorbeeld gebruiken we het gegevenstype "float". Voeg dus de juiste biaswaarde toe aan uw exponent. U moet ook het resultaat van de berekening 4 + 127 = 131 omzetten in een binair getal. Het nummer 131 is het nummer 10000011 in het dubbele systeem.
- Nu kunt u het afgewerkte drijvende-kommagetal noteren. Schrijf eerst het bit voor het bord. Omdat het een positief getal is, is het eerste bit een 0. Dan moet je 131 schrijven. Het hele ding past perfect in dit geval, omdat dit nummer 8 bits vereist en 8 bits beschikbaar zijn voor een float. Ten slotte moet je de eerste 23 bits van de mantisse noteren, omdat de mantissa 23 bits beschikbaar heeft voor een float.
- Uw voltooide floating point-nummer moet daarom het nummer 01000001100100110011001100110011 zijn. Een beetje duidelijker is het nummer 0 | 10000011 | 00100110011001100110011.
Converteer drijvende-kommagetal naar decimaal getal - Dit is hoe
Tot slot willen we u laten zien hoe u een drijvende-kommagetal weer in een decimaal getal kunt omzetten. Hiervoor nemen we het nummer 1000001100100110011001100110011.
- Vul eerst het nummer (voorkant) met nullen totdat u een 16, 32 of 64 bit nummer krijgt. In dit geval is het 01000001100100110011001100110011.
- Het eerste cijfer staat voor het teken. Dus ons aantal is positief.
- Schrijf vervolgens de volgende (in dit geval) 8 cijfers en trek de afwijking af. (10000011) ₂ = 131 → 131 - 127 = 4 → Dus er is "⋅ 2⁴" aan de achterkant.
- Schrijf nu een "1" en vervolgens alle resterende getallen, evenals de "⋅ 2⁴": 1.00100110011001100110011 ⋅ 2⋅
- Verplaats vervolgens de komma 4 plaatsen naar rechts zodat u de "⋅ 2⁴" kunt weglaten: 10010.0110011001100110011
- Converteer vervolgens 10010 zoals gewoonlijk naar een geheel getal. Je krijgt 18.
- Nu moet u de decimalen omzetten. Het eerste cijfer na de komma heeft de waarde 1: 2¹, het tweede cijfer 1: 2² enzovoort. Voeg de waarden toe en het nummer vóór de komma geeft u het nummer 18.3999996185302734375.
In de volgende praktische tip laten we u zien hoe u ASCII-letters kunt converteren naar binaire getallen.