Fixní desetinná čárka

V minulém díle jsem mluvil o tom, jak počítače nedokážou reprezentovat většinu desetinných čísel přesně. Nemluvil jsem ale o tom, jak se s desetinnými čísly vlastně konkrétně v počítačích pracuje.

Takže: jakým způsobem se pracuje s desetinnými čísli v počítači?

Už víš, že pro celá čísla je nutný, aby to číslo mělo nějaký rozsah. Například 1 bajt je číslo v rozsahu 28 což může být číslo od 0 – 255 nebo -128 – +127.

Pro desetinný čísla se používá 32 bitový a 64 bitový rozsah.

Příklad

Řekněme, že máš 32 bitů.
00000000000000000000000000000000

Jak do toho uložíš třeba číslo pí, které si zaokrouhlíme na 3,14?
Desetinný číslo se skládá z celé a desetinné části.
Jsou to vlastně dvě skupiny cifer: 3 a 14.

Takže můžeš prostě jednoduše říct, že tyhle čísla převedeš do dvojkový soustavy jako celý čísla:

  • 310 = 112
  • 1410 = 11102

Takže máš teď bity 11 a další bity 1110 který potřebuješ nějak uložit do 32 bitů. Jak to uděláš? Všimni si, že bity jsou prostě jen bity, signál je signál a žádný desetinný čárky v těch obvodech nejsou.

Musíš si zase domluvit nějaký kód! Jeden možnej způsob je fixní desetinná čárka. Jak to funguje? Jednoduše.

Máš 32 bitů: 00000000000000000000000000000000.
32 bitů rozdělíš na dvě skupiny: celou a desetinnou část, třeba půl na půl: 16 bitů pro celou část, 16 bitů pro desetinnou část

0000000000000011: celá část
0000000000001110: desetinná část
3,14 = 00000000000000110000000000001110

Tenhle způsob není moc dobrej z několika důvodů

  • Tímto způsobem musíš tranzistory a hradla v procesorech napevno zadrátovat na fixní desetinnou čárku, protože matematické operace nad těmito čísly musí být zadrátované jinak, než u celých čísel.
  • Musíš při výrobě procesoru odhadnout, jak velká by měla být celá část a jak velká desetinná část. Jedno je na úkor druhého. Jenže různá odvětví vyžadují různě přesná/velká čísla.

Shrnutí

  • Fixní desetinná čárka je „kód“, jakým lze reprezentovat desetinná čísla.
  • Tento způsob se v počítačích nepoužívá protože nelze nijak inteligentně určit, v jakém poměru by měla být celá a desetinná část.