Plávajúce číslo bodu: čo to je? Jednoducho vysvetlené pomocou príkladov
V tomto praktickom tipe vám ukážeme, čo je číslo s pohyblivou rádovou čiarkou a ako sa líši od čísla s pevnou čiarkou.
Plávajúce číslo bodu: čo to je?
V počítačovej vede sa číslo s pohyblivou rádovou čiarkou často používa pre meracie prístroje, ktoré majú pracovať s určitou presnosťou.
- Číslo s plávajúcou desatinnou čiarkou (alebo „číslo s plávajúcou desatinnou čiarkou“) je reprezentácia čísla pomocou exponenciálneho zápisu. Vo výnimočných prípadoch to funguje iba približne. Číslo 1230000 môžete reprezentovať aj číslom 1, 23 ⋅ 10⁶.
- 1.23 sa nazýva "Mantissa". 10 je „základ“ a 6 je „exponent“. Mimochodom, mantisu je možné pridať aj znamenie. Celú vec však môžete použiť aj na duálny systém. Číslo 10101100 môžete tiež reprezentovať číslom 1.0101100 ⋅ 2⁷. Počítač ukladá iba znamenia, mantisy a exponenty.
- Počítače zvyčajne posúvajú čiarku tam a späť, kým pred čiarkou nie je iba 1. Potom musí počítač uložiť iba desatinné miesta mantisy a exponentu.
- Aby sa exponent mohol uložiť ako kladné číslo, pridá sa pevné číslo, tzv. Zaujatosť. Najmenší možný exponent miesta pred desatinnou čiarkou (- systematická odchýlka) sa uloží ako 0.
- Na rozdiel od čísla s pevným číslom nie je čiarka v pevnom bode v čísle s pohyblivou rádovou čiarkou.
Half, Float & Double - spoločné kódovanie čísel s pohyblivou rádovou čiarkou
Určite ste narazili na tieto tri výrazy, najmä pri programovaní s Arduino. Toto sú štandardizované znázornenia.
- Dátový typ „polovica“ je 16-bitové číslo. Za znamenie je zodpovedný bit úplne vľavo. Exponent má 5 bitov a mantisu 10. Použitá predpojatosť je 15. Pretože prvý bit mantisy je (takmer) vždy 1, neuloží sa.
- Dátový typ „float“ (alebo „single“) je 32-bitové číslo. Aj tu sa trochu používa na označenie. Exponent má však 8 bitov (zaujatosť = 127) a mantisu 23.
- Dátový typ „double“ tiež používa trochu pre znamenie. Tu však má exponent 11 bitov (zaujatosť = 1023) a mantisa dokonca 52 bitov. Celkovo je to 64 bitov, t. J. 8 bajtov.
- Okrem týchto troch bežných typov údajov je ich omnoho viac. Väčšinou sa však nepoužívajú, pretože presnosť polovice, plaváka a dvojnásobku je už dosť dobrá.
Preveďte desatinné čísla na čísla s desatinnou čiarkou - ako to funguje
Nakoniec by sme vám chceli ukázať, ako môžete previesť bežné desatinné číslo na číslo s desatinnou čiarkou.
- V tomto príklade používame desatinné číslo 18.4. Číslo pred desatinnou čiarkou sa najskôr prenesie do duálneho systému. Vo výsledku by ste mali dostať (10 010) ₂.
- Potom musíte previesť 0, 4. Najprv vynásobte 0, 4 číslom 2. Výsledkom je 0, 8. Poznačte si číslo pred čiarku. V tomto prípade je to 0. Potom vynásobte 0, 8 x 2. Tentoraz dostanete 1, 6 ako výsledok. Poznačte si 1 a pokračujte vo výpočte s 0, 6. Po chvíli si všimnete, že sa vzor opakuje sám (v tomto príklade). Nakoniec si zapíšte všetky čísla zhora nadol: 011001100110 ...
- Potom ich sčítajte: Tiež pridajte (⋅ 2⁰) tak, aby ste dostali 10010, 01100110 ... ⋅ 2⁰. Potom posúvajte čiarku, až kým nie je pred desatinnou čiarkou iba jedno číslo, a primerane zmeňte aj silu. Vo výsledku by ste mali dostať 1.001001100110 ... ⋅ 2⁴, pretože ste posunuli desatinnú čiarku o 4 miesta doľava. Tento krok sa tiež nazýva „normalizácia“.
- V tomto príklade používame dátový typ „float“. Pridajte teda exponentu príslušnú hodnotu zaujatosti. Výsledok výpočtu 4 + 127 = 131 musíte tiež previesť na binárne číslo. Číslo 131 je číslo 10000011 v duálnom systéme.
- Teraz si môžete zapísať konečné číslo s pohyblivou rádovou čiarkou. Najprv napíšte bit pre znamenie. Pretože je to kladné číslo, prvý bit je 0. Potom musíte napísať 131. Celá vec sa v tomto prípade dokonale hodí, pretože toto číslo vyžaduje 8 bitov a 8 bitov je dostupných pre float. Nakoniec musíte napísať prvých 23 bitov mantisy, pretože mantissa má k dispozícii 23 bitov na float.
- Vaše dokončené číslo s pohyblivou rádovou čiarkou by preto malo byť číslo 01000001100100110011001100110011. Trochu jasnejšie je číslo 0 | 10000011 | 00100110011001100110011.
Prevod čísla s pohyblivou rádovou čiarkou na desatinné číslo - Tu je postup
Nakoniec by sme vám chceli ukázať, ako môžete znova previesť číslo s pohyblivou rádovou čiarkou na desatinné číslo. Z tohto dôvodu berieme číslo 1000001100100110011001100110011.
- Najprv vyplňte číslo (predné) nulami, kým nezískate 16, 32 alebo 64 bitové číslo. V tomto prípade je to 01000001100100110011001100110011.
- Prvá číslica predstavuje označenie. Takže naše číslo je kladné.
- Potom napíšte ďalších (v tomto prípade) 8 číslic a odpočítajte predpätie. (10000011) ₂ = 131 → 131 - 127 = 4 → Na zadnej strane je teda „⋅ 2⁴“.
- Teraz napíšte „1“ a potom všetky zostávajúce čísla, ako aj „⋅ 2⁴“: 1.00100110011001100110011 ⋅ 2⋅
- Potom posuňte čiarku 4 miesta doprava, aby ste vynechali znak „⋅ 2⁴“: 10010.0110011001100110011
- Ďalej previesť 10010 na celé číslo ako obvykle. Získate 18 rokov.
- Teraz musíte previesť desatinné miesta. Prvá číslica za čiarkou má hodnotu 1: 2¹, druhá číslica 1: 2² atď. Pridajte hodnoty a číslo pred čiarku vám poskytne číslo 18.3999996185302734375.
V ďalšom praktickom tipe vám ukážeme, ako môžete prevádzať písmená ASCII na binárne čísla.