Desetinná čísla

Desetinná čísla znáš, že jo. Nejseš takovej retard a víš, že 5 / 2 = 2,5

Jak se s číslem 2,5 pracuje v počítači?

Hrozně divně.

Desetinná čísla ve dvojkové soustavě

Dokážeš 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éhle číselné řady se dá na první pohled vyčíst jednoduchej vztah vydělením dvěma.

  • 1 / 2 = 0,5
  • 0,5 / 2 = 0,25
  • 0,25 / 2 = 0,125
  • 0,125 / 2 = 0,0625.

Ale co když začneš 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á?

To je jednoduchý. Pokud například pracuješ v počíatči s číslem 0,810 tak musíš 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řevedeš zpátky tak nedostaneš 0,810 ale něco jako 0.79998779296875…10

Proč? Protože z minulých dílu už víš, ž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ůžeš jich mít nekonečně hodně.

Shrnutí

  • Počítače kromě celých čísel umí pracovat i s desetinnými čísly
  • Když převedeš konkrétní desetinné číslo ze dvojkové soustavy do desítkové, dostaneš vždy nějaké normální desetinné číslo, které se neopakuje do nekonečna.
  • Jakmile ale převedeš desetinné číslo z desítkové soustavy do dvojkové, většinou dostaneš nenormální čí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).