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.

6 komentářů u „Převod desetinného čísla do binární reprezentace

    1. Mik

      Nechapu to nasobeni 8mi, ikdyz kombinace cislis je spravne. Nejak tam ale vypadla ta pevna carka.
      Vetsinou se pouziva treba 7Q8, 7 bitu pro Integer a 8bitu pro float.
      Sel bych na to takhle: 10 = 1010bin
      0.625 x 2 =
      ————–
      1.25 -> (odecteme 1) 0.25 x 2 =
      0.5 x 2 =
      1
      0.625 = 101bin

      V zapisu 7Q8 by to bylo takhle 1 000 1010 101 00000
      prvni bit je Sign a urcuje zaporne cislo, dalsich 7 bitu je integer, jenom doplnim nuly a 8 bitu je pro float a taky doplnim nuly.

      U plovouci carky potom vime kde je exponent a o kolik desetinnych mist se musi posunout.
      vysledek je spravne takto:
      1 00000011 101010100000000000000000
      znovu prvni cislo reprezentuje znamenko minus, exponent je 3 a nase cislo, zbytek se vyplni nulami.
      Ale jinak pekny tutorial

  1. Ivana

    Ahoj,ráda bych požádala o pomoc.Potřebovala bych následující kod převést do podoby GPS souřadnic.Ale mé chápání to prostě nezvládá.Najde se tu někdo,kdo pomůže?Díky
    01000111011100100110000101110100011101010110110001110101011010
    10011010010010110000100000011011010110000101110100011001010010
    00000111011001111001011011000111010101110011011101000110010101
    10111001101111001000010010000001000011011000010110001101101000
    01100101001000000110111001100001011010100110010001100101011101
    00011001010010000001101110011000010010000001110011011011110111
    01010111001001100001011001000110111001101001011000110110100101
    10001101101000001000000100111000100000001101000011100110110000
    00110101001101110010111000110010001110000011001100100111001000
    00010001010011000000110001001101101011000000110000001101110010
    11100011011000110100001100110010011100101110001000000100100001
    10111101100100011011100110010100100000011100110111010001100101
    01110011011101000110100100100000011100000111001001101001001000
    00011011000110111101110110011101010010000100100000001110100010
    1001

Napsat komentář: Fantomas Zrušit odpověď na komentář