Desetinná čísla znáte. Víte, že 5 / 2 = 2,5
Jak se s číslem 2,5
pracuje v počítači?
Desetinná čísla ve dvojkové soustavě
Dokážete odhadnout, kolik je 0,12 v desítkové soustavě?
- 0,12 = 0,510
- 0,012 = 0,2510
- 0,0012 = 0,12510
- 0,00012 = 0,062510
- …
Z této číselné řady se dá na první pohled vyčíst jednoduchý vztah vydělením dvěmi.
- 1 / 2 = 0,5
- 0,5 / 2 = 0,25
- 0,25 / 2 = 0,125
- 0,125 / 2 = 0,0625.
- …
Ale co když začnete převádět libovolná čísla z desítkové soustavy do dvojkové soustavy? Pak to začne bejt divný.
110 = 12
0,910 = 0,1110011001100110011…2
0,810 = 0,11001100110011001101…2
0,710 = 0,10110011001100110011…2
0,610 = 0,1001100110011001101…2
0,510 = 0,12
0,5110 = 0,1000001010001111011…2
Většina desetinných čísel z desítkové soustavy nemá ve dvojkové číselné soustavě žádnou hezkou hodnotu a obsahují řadu cifer která se v nějakém složení opakují do nekončena.
Je to stejné, jako 10 / 3 = 3,333333…
Počítače neumí být přesné v desetinné interpretaci
⚠️ Pozor na to: většina desetinných čísel desítkové soustavy mají ve dvojkové soustavě hodnoty, jejichž cifry se táhnou do nekonečna ale počítače nemají schopnost uložit nekonečně veliké ani nekonečně přesné číslo.
Co to znamená?
Pokud například pracujete v počítači s číslem 0,810 tak musíte počítat s tím, že jeho vyjádření v počítači není přesné protože místo 0,11001100110011001100110011001100....
se uloží například jen 0,1100110011001100
.
Jakmile tuto binární hodnotu převedete zpátky tak nedostanete 0,810 ale něco jako 0.799999998779…10