Tento text volně navazuje na článek popisující transformaci celého čísla do dvojkové soustavy. V několika ohledech na něj dokonce i odkazuje, proto doporučuji si nejprve prostudovat v něm popsané postupy. Následně můžete směle přikročit k převodu čísla s desetinnou čárkou.
Na úvod bude vhodné říci, že binární číslo pro aritmetické účely není jedinou možnou podobou údaje. Další formy symbolizují počítače a jejich způsoby ukládání binárních dat pro své vlastní účely.
Nejprve začnu převodem čísla v desítkové soustavě pro další matematické využití. Konkrétně půjde o 10,62510. Oddělím přitom od sebe celou a desetinnou část. Nyní se budu věnovat pouze 0,62510. Převod čísla 10 popisuje již zmíněný předcházející článek.
- Mohu od 0,625 odečíst 1/2 bez toho, aby se dostal do záporných hodnot? ANO, učiním tak.
- Mohu od 0,125 odečíst 1/4 bez toho, aby se dostal do záporných hodnot? NE
- Vezměme opět 0,125. Mohu odečíst 1/8 bez toho, abych se dostal do záporných hodnot? ANO, učiním tak.
- Zbývá nula, a proto převod končí. Pokud by se tak nestalo, pokračovali bychom dále s 1/16, 1/32, 1/64 …
Nyní nahradíme všechny odpovědi ANO jedničkou a tvrzení NE nulou. Výsledek zapisujeme směrem do horního údaje dolů. Získáváme tedy 1012. Přidáme-li 1010 v binární soustavě jako 10102, máme výsledek v podobě 1010,1012.
Nyní přichází na řadu reprezentace pro hardware počítače. Lze se vydat celkem dvěma cestami – pevnou nebo plovoucí desetinnou čárkou.
Pevná čárka
Nejprve si zvolíme počet míst za celou částí čísla, jenž budeme uchovávat. V našem případě půjde o 3. Dále musíme znát základ soustavy, do které převádíme, tedy 2. Provedeme jednoduchý výpočet 23 a tímto mezivýsledkem vynásobíme vstupní číslo, -10,62510 (povšimněte si přidaného znamínka mínus, jenž nám zajistí zajímavější postup). Pochopitelně -10,625 x 8 = -85. Z tohoto dalšího mezivýsledku oddělíme celou část (tedy -85) a tu následně převedeme do binární podoby. Využít můžeme například doplňkový kód – 101010112.
Plovoucí čárka
Transformace do podoby s proměnlivou řadovou čárkou se řadí mezi složitější operace. Podrobněji se ji například věnuje tento tutoriál. Výsledná hodnota se skládá celkem ze tří částí:
- 1 bit pro znaménko (0 pro kladné číslo, 1 symbolizuje záporný údaj)
- 8 bitů pro exponent
- mantissa (normovaný tvar) – 23 bitů
Využijeme 1010,1012 z prvního příkladu a provede úpravu na tvar s exponentem, jenž zajistí existenci jediné číslice před desetinou čárkou -> 1,010101 x 23. Nyní zformujeme druhou část, k exponentu 3 přičteme 127 a provedeme převod do dvojkové soustavy -> 100000102. Zbývá mantissa, kterou však již již v podstatě disponujeme. Protože normovaný tvar neuchovává jedničku před čárkou využijeme pouze ,010101. Výsledek vypadá takto:
0 10000010 01010100000000000000000
K ověření poslouží tato pomůcka.