Desetinná čísla

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 když 10 / 3 = 3,333333…..

Počítače neumí být v desetinných číslech přesné

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

Proč? Protože z minulých dílu už víte, že každý bit je reprezentovaný konkrétním signálem, konkrétním fyzickým obvodem a přestože jsou ty obvody strašně mrňavé, nemůžete jich mít nekonečně hodně.

Shrnutí

  • Počítače kromě celých čísel umí pracovat i s desetinnými čísly
  • Když převedete konkrétní desetinné číslo ze dvojkové soustavy do desítkové, dostanete vždy nějaké normální desetinné číslo, které se neopakuje do nekonečna.
  • Jakmile ale převedete desetinné číslo z desítkové soustavy do dvojkové, většinou dostanete číslo, které se v desetinné části opakuje do nekonečna.
  • Počítače neumí uložit nekonečné množství bitů. Z tohoto důvodu počítače neumí reprezentovat všechna desetinná čísla přesně! (Což ale neznamená, že počítače počítají všechno špatně, o tom si povíme později).