Archiv pro štítek: fixní čárka

Převod desetinného čísla do binární reprezentace

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.