Zelf maken 4: Decimaal getal omzetten naar een binair getal

Maak een programma dat een decimaal, geheel getal als invoer vraagt en zet het om naar zijn binaire equivalent.

Je hebt hiervoor 2 bewerkingen nodig: de restwaarde en een deling door 2

Dit algoritme gaat als volgt:

  1. Neem een positief geheel getal
  2. Zolang het getal <> 0 is, doe
  3. Als bij het delen door 2 de restwaarde 1 is (het getal was oneven) schrijf dan een 1 op, anders (het getal was even) schrijf een 0 op
  4. Deel het getal door 2 en ga met deze nieuwe waarde  verder
  5. Ga terug naar stap 1

 

Voorbeeld:

  1. Getal = 7
  2. 7 <> 0
  3. Restwaarde = 1 (7 is oneven): schrijf een 1 op
  4. Deel 7 door 2: Dit wordt 3 en doorloop de stappen nogmaals, nu met 3
  5. 3 <> 0
  6. Restwaarde = 1 (3 is oneven): Schrijf een 1 op
  7. Deel 3 door 2: Dit wordt 1 en doorloop de stappen nogmaals, nu met 1
  8. 1 <>0
  9. Restwaarde = 1 (1 is oneven): schrijf een 1 op
  10. Deel 1 door 2: Dit wordt 0
  11. Het getal is 0 geworden en de loop stopt. Je hebt nu, van rechts naar links: 111
  12. Controle: 1 1 1 = 1*2^0 + 1 * 2^1 + 1*2^2 = 1 +2 + 4 = 7.
  13. Het klopt. Decimaal 7 = binair 1 1 1

 

Opbouwen in Flowgorithm:

Neem bovenstaand algoritme:

  1. Neem een positief geheel getal {vraag de gebruiker om een geheel positief getal}
  2. Zolang het getal <> 0 is, doe {een while-loop, als het getal 0 is, spring dan naar stap 6}
  3. Als bij het delen door 2 de restwaarde 1 is (het getal was oneven) schrijf dan een 1 op, anders (het getal was even) schrijf een 0 op {een if-statement: if getal mod 2 = 0, geef als uitvoer een 0; if getal mod 2 = 1, geef als uitvoer een 1}
  4. Deel het getal door 2 en ga met deze nieuwe waarde  verder { getal = getal /2 of….dit is tricky: je moet met een geheel getal verder, dus dit werkt alleen als het getal even is. Wat doe je met een oneven getal op deze plek?}
  5. Ga terug naar stap 1
  6. Klaar. Het binaire getal is van rechts naar links gegeven, oftewel van boven naar beneden.
  7. Extra: Zorg voor een mooie uitvoer van links naar rechts

 

Voorbeeld in Flowgorithm: DecimaalNaarBinair.fprg