Flytende punktnummer: hva er det? Enkelt forklart med eksempler
I dette praktiske tipset viser vi deg hva et flytende punktnummer er og hvordan det skiller seg fra et fast punktnummer.
Flytende punktnummer: hva er det?
I informatikk brukes ofte flytepunktnummeret til måleinstrumenter som antas å fungere med en viss nøyaktighet.
- Et flytende punktnummer (eller "flytende punktnummer") er en representasjon av et nummer ved bruk av eksponentiell notasjon. I unntakstilfeller fungerer dette bare omtrent. Du kan også representere tallet 1230000 med tallet 1, 23 ⋅ 10⁶.
- 1.23 heter "Mantissa". 10 er "base" og 6 er "eksponent". Forresten, et skilt kan også legges til mantissen. Du kan imidlertid også bruke hele saken på det doble systemet. Du kan også representere tallet 10101100 med tallet 1.0101100 ⋅ 2⁷. Datamaskinen lagrer bare skiltet, mantissa og eksponenten.
- Datamaskiner flytter kommaet frem og tilbake til det bare er en foran komma. Da trenger PC-en bare å lagre desimaler til mantissen og eksponenten.
- Slik at eksponenten kan lagres som et positivt tall, legges et fast tall, den såkalte skjevheten til. Den minste mulige eksponenten for stedet før desimaltegnet (- skjevhet) lagres som 0.
- I motsetning til fastpunktsnummeret er kommaet ikke på et fast punkt i et flytende punktnummer.
Half, Float & Double - Vanlig koding av antall flytende punkter
Du har helt sikkert snublet over disse tre begrepene, spesielt når du programmerer med Arduino. Dette er standardiserte representasjoner.
- Datatypen "halvparten" er et 16-bits tall. Den venstre biten er ansvarlig for skiltet. Eksponenten har 5 biter og mantissen 10. Skjevheten som er brukt er 15. Siden den første biten av mantissen er (nesten) alltid 1, lagres ikke denne.
- Datatypen "float" (eller "single") er et 32-bits nummer. Også her brukes litt til skiltet. Eksponenten har imidlertid 8 biter (skjevhet = 127) og mantissen 23.
- Datatypen "dobbel" bruker også litt for tegnet. Her har imidlertid eksponenten 11 biter (bias = 1023) og mantissen til og med 52 biter. Totalt er dette 64 biter, dvs. 8 byte.
- I tillegg til disse tre vanlige datatypene, er det mange flere. Imidlertid blir disse stort sett ikke brukt fordi nøyaktigheten til halvparten, flyten og den dobbelte allerede er god nok.
Konverter desimaltall til flytende punktum - hvordan det fungerer
Til slutt vil vi vise deg hvordan du kan konvertere et normalt desimalnummer til et flytende punktnummer.
- I dette eksemplet bruker vi desimaltallet 18.4. Tallet før desimalet overføres først til det doble systemet. Som et resultat bør du få (10010) ₂.
- Da må du konvertere 0.4. Multipliser først 0, 4 med 2. Du får 0, 8 som resultat. Noter nummeret før komma. I dette tilfellet er det en 0. Multipliser deretter 0, 8 med 2. Denne gangen får du 1, 6 som resultat. Noter 1 og fortsett å beregne med 0, 6. Etter en stund vil du merke at mønsteret gjentar seg (i dette eksemplet). Til slutt, skriv ned alle tallene fra topp til bunn: 011001100110 ...
- Legg så tallene sammen: Legg også til (⋅ 2⁰) slik at du får 10010.01100110 ... ⋅ 2⁰. Flytt deretter kommaet til det bare er en 1 foran desimalet, og endre også strømmen på riktig måte. Som et resultat bør du få 1.001001100110 ... ⋅ 2⁴, siden du har flyttet desimalpunktet 4 plasser til venstre. Dette trinnet kalles også "normalisering".
- I dette eksemplet bruker vi datatypen "float". Så legg riktig forspenningsverdi til eksponenten din. Du må også konvertere resultatet av beregningen 4 + 127 = 131 til et binært tall. Tallet 131 er tallet 10000011 i det doble systemet.
- Nå kan du skrive ned det ferdige flytende punktnummeret. Skriv først biten for tegnet. Siden det er et positivt tall, er den første biten en 0. Da må du skrive 131. Det hele passer perfekt i dette tilfellet, siden dette tallet krever 8 biter og 8 biter er tilgjengelige for en flottør. Til slutt må du skrive ned de første 23 bitene av mantissen, siden mantissen har 23 biter tilgjengelig for en flottør.
- Ditt ferdige flytende punktnummer bør derfor være nummeret 01000001100100110011001100110011. Litt tydeligere er tallet 0 | 10000011 | 00100110011001100110011.
Konverter flytende punktnummer til desimaltall - Slik gjør du det
Til slutt vil vi vise deg hvordan du kan konvertere et flytende punktnummer til et desimaltall igjen. For dette tar vi nummeret 1000001100100110011001100110011.
- Fyll først tallet (foran) med nuller til du får et 16, 32 eller 64 bit nummer. I dette tilfellet er det 01000001100100110011001100110011.
- Det første sifferet står for skiltet. Så antallet vårt er positivt.
- Skriv deretter de neste (i dette tilfellet) 8 sifre og trekk skjevhetene. (10000011) ₂ = 131 → 131 - 127 = 4 → Så det er "⋅ 2⁴" bak.
- Skriv nå en "1", og deretter alle de gjenværende tallene, samt "⋅ 2⁴": 1.00100110011001100110011 ⋅ 2⋅
- Flytt deretter komma 4 steder til høyre slik at du kan utelate "⋅ 2⁴": 10010.0110011001100110011
- Deretter konverterer du 10010 til et helt tall som vanlig. Du blir 18 år.
- Nå må du konvertere desimaler. Det første sifferet etter komma har verdien 1: 2¹, det andre sifferet 1: 2² og så videre. Legg til verdiene, og tallet før komma gir deg nummeret 18.3999996185302734375.
I det neste praktiske tipset vil vi vise deg hvordan du kan konvertere ASCII-bokstaver til binære tall.