Computerarithmetiek

Welke uitdrukking vermenigvuldigt een geheel getal x met 10 met verschuivingen en optellingen, zonder een vermenigvuldigingsinstructie?

  1. A(x << 3) + (x << 1)
  2. B(x << 10)
  3. C(x << 2) + x
Antwoord en toelichting tonen

Antwoord: A. (x << 3) + (x << 1)

Een verschuiving van 1 bit naar links verdubbelt de waarde, dus x << 3 is 8 keer en x << 1 is 2 keer. 8x + 2x = 10x, dus (x << 3) + (x << 1) berekent de vermenigvuldiging met 10. Vermenigvuldigen met een constante kan zo worden vervangen door een combinatie van verschuivingen en optellingen, en ook compilers kiezen de snelste variant. x << 10 is een vermenigvuldiging met 2¹⁰ = 1024 en (x << 2) + x is 4x + x = 5 keer. Let op dat het aantal verschuivingsbits niet wordt verward met de factor 10.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Computerarithmetiek

  1. Wat is de juiste reden dat gewone gehele-getaldelers (die het quotiënt bit voor bit bepalen, zoals restoring en non-restoring) doorgaans trager zijn dan vermenigvuldigers?
  2. Wat is het resultaat wanneer bij een 8-bits ondertekend geheel getal −8 (1111 1000) met een rekenkundige verschuiving 1 bit naar rechts wordt geschoven?
  3. Welke combinatie van de resultaten van −7 / 2 en −7 >> 1 (bij rekenkundige verschuiving naar rechts) voor het type int in C is juist?
  4. Wat is in C het resultaat van het aftrekken van 1 van 0 bij een niet-ondertekend 32-bits geheel getal (unsigned int)?
  5. Hoe wordt bij de optelling van niet-ondertekende gehele getallen vastgesteld dat het resultaat buiten het weer te geven bereik valt (overflow)?