Številka s plavajočo vejico: kaj je to? Preprosto razloženo s primeri
V tem praktičnem nasvetu vam pokažemo, kaj je številka s plavajočo točko in kako se razlikuje od številke s fiksno točko.
Številka s plavajočo vejico: kaj je to?
V računalništvu se številka s plavajočo vejico pogosto uporablja za merilne naprave, ki naj bi delovale z določeno natančnostjo.
- Številka s plavajočo vejico (ali "številka s plavajočo vejico") je prikaz števila z uporabo eksponentne notacije. V izjemnih primerih to deluje le približno. Številko 1230000 lahko predstavljate tudi s številko 1, 23 ⋅ 10⁶.
- 1, 23 se imenuje "Mantissa". 10 je "osnova", 6 pa "eksponent". Mimotiki lahko mimogrede dodamo tudi znak. Vendar lahko celotno stvar uporabite tudi za dvojni sistem. Številko 10101100 lahko predstavljate tudi s številko 1.0101100 ⋅ 2⁷. Računalnik hrani samo znak, mantiso in eksponent.
- Računalniki ponavadi premikajo vejico naprej in nazaj, dokler ni samo 1 pred vejico. Potem mora PC samo shraniti decimalna mesta mantisse in eksponenta.
- Da se eksponent lahko shrani kot pozitivno število, se doda fiksno število, tako imenovano pristranskost. Najmanjši možni eksponent mesta pred decimalno točko (- pristranskost) se shrani kot 0.
- V nasprotju s številko s fiksno točko vejica ni v fiksni točki v številki s plavajočo vejico.
Half, Float & Double - Običajno kodiranje števil s plavajočo vejico
Zagotovo ste naleteli na te tri termine, zlasti pri programiranju z Arduino. To so standardizirane reprezentacije.
- Podatkovna vrsta "polovica" je 16-bitno število. Za znak je odgovoren skrajni levi delček. Eksponent ima 5 bitov, mantissa 10. Uporabljeno pristranskost pa 15. Ker je prvi del mantise (skoraj) vedno 1, se to ne shrani.
- Tip podatkov "float" (ali "single") je 32-bitno število. Tudi tukaj se za znak uporablja malo. Vendar ima eksponent 8 bitov (pristranskost = 127) in mantissa 23.
- Podatkovna vrsta "dvojno" uporablja tudi malo za znak. Tu pa ima eksponent 11 bitov (pristranskost = 1023), mantissa pa celo 52 bitov. Skupno je to 64 bitov, to je 8 bajtov.
- Poleg teh treh pogostih vrst podatkov obstaja še veliko več. Vendar se te večinoma ne uporabljajo, ker je natančnost polovice, lebdenja in dvojnosti že dovolj dobra.
Pretvorite decimalna števila v številke s plavajočo vejico - kako to deluje
Na koncu bi vam radi pokazali, kako lahko pretvorite normalno decimalno številko v številko s plavajočo vejico.
- V tem primeru uporabljamo decimalno številko 18.4. Število pred decimalno točko se najprej prenese v dvojni sistem. Kot rezultat bi morali dobiti (10010) ₂.
- Nato morate pretvoriti 0, 4. Najprej pomnožite 0, 4 z 2. Kot rezultat dobite 0, 8. Zapišite številko pred vejico. V tem primeru je vrednost 0. Nato pomnožite 0, 8 z 2. Tokrat dobite 1, 6 kot rezultat. Zapišite si 1 in nadaljujte z izračunom z 0, 6. Čez nekaj časa boste opazili, da se vzorec ponavlja (v tem primeru). Na koncu zapišite vse številke od zgoraj navzdol: 011001100110 ...
- Nato skupaj dodajte številke: Dodajte tudi (⋅ 2⁰), tako da dobite 10010.01100110 ... ⋅ 2⁰. Nato premaknite vejico, dokler pred decimalno točko ni samo 1, prav tako spremenite moč. Kot rezultat bi morali dobiti 1.001001100110 ... ⋅ 2⁴, saj ste decimalno vejico premaknili na 4 mesta levo. Ta korak se imenuje tudi "normalizacija".
- V tem primeru uporabljamo podatkovni tip "float". Zato dodajte ustrezno vrednost pristranskosti svojemu eksponentu. Rezultat izračuna 4 + 127 = 131 morate pretvoriti tudi v binarno število. Številka 131 je številka 10000011 v dvojnem sistemu.
- Zdaj lahko zapišete končno številko s plavajočo vejico. Najprej napišite bit za znak. Ker gre za pozitivno število, je prvi bit 0. In potem morate napisati 131. Celotna zadeva se v tem primeru popolnoma prilega, saj za to številko potrebuje 8 bitov, za float pa je na voljo 8 bitov. Končno morate zapisati prvih 23 bitov mantisse, saj ima mantissa na voljo 23 bitov za plovec.
- Vaša končana številka s plavajočo vejico bi zato morala biti številka 01000001100100110011001100110011. Nekoliko bolj jasna je številka 0 | 10000011 | 00100110011001100110011.
Pretvorite številko s plavajočo vejico v decimalno številko - Tukaj je opisano
Na koncu bi vam radi pokazali, kako lahko ponovno spremenite številko plavajoče točke v decimalno številko. Za to vzamemo številko 1000001100100110011001100110011.
- Najprej napolnite številko (spredaj) z ničlami, dokler ne dobite 16, 32 ali 64 bitne številke. V tem primeru gre za 01000001100100110011001100110011.
- Prva številka pomeni znak. Torej je naša številka pozitivna.
- Nato zapišite naslednjih (v tem primeru) 8 števk in odštejte pristranskost. (10000011) ₂ = 131 → 131 - 127 = 4 → Na zadku je "⋅ 2⁴".
- Zdaj napišite "1" in nato vse preostale številke ter "⋅ 2⁴": 1.00100110011001100110011 ⋅ 2⁴
- Nato premaknite vejico 4 mesta v desno, tako da lahko izpustite "⋅ 2⁴": 10010.0110011001100110011
- Nato pretvorite 10010 v celo število kot običajno. Dobiš 18.
- Zdaj morate pretvoriti decimalna mesta. Prva številka za vejico ima vrednost 1: 2¹, druga številka 1: 2² in tako naprej. Dodajte vrednosti in število pred vejico vam da številko 18.3999996185302734375.
V naslednjem praktičnem nasvetu vam bomo pokazali, kako lahko črke ASCII pretvorite v binarne številke.